透過 C# 動態建立 Zoom會議

我們可以使用 Zoom SDK,搭配C#即可透過程式碼建立線上會議,並且發送通知。若能實現這一點,我們就可以搭配 Chat Bot在群組對談中,透過自然語言對LINE會議小幫手來下達開會通知,請會議小幫手幫我們建立Zoom會議,並且把會議連結傳遞出來,例如,我們可以在群組中對機器人說:

請幫我建立一個週四下午3:30分的zooom線上會議,並且把會議連結傳送給資訊部門所有人,同時幫我設定開會前的通知提醒。

就可以實現一個聽得懂自然語言控制的會議助理。

要實現這件事,必須先要能夠透過程式碼控制Zoom,目前Zoom官方有提供 Rest API 讓開發者使用,如果想要更簡單的透過C#程式碼呼叫Zoom的各種功能,可以參考底下這套 Nuget 套件:
https://www.nuget.org/packages/ZoomNet

你可以在專案中透過CLI指令引用:

dotnet add package ZoomNet --version 0.58.0

目前支援 .net framework 4.8, .net 3.x, .net 6,7 這幾個版本。

在使用前,你必須先具備 Zoom 的帳號,並且在Zoom的開發人員後台上登入(https://marketplace.zoom.us/),接著透過底下網址,建立一個 Zoom App:
https://marketplace.zoom.us/user/build

第一次進入會出現要求你同意使用條款的畫面,畫面如下:
圖片

接著點選 Build App:
圖片

這邊會出現讓你建立 Zoom App的畫面:
圖片

有幾種 App 類型你需要注意:

  1. Zoom Apps 是屬於崁入在 Zoom Client端的App,一般來說是讓第三方開發團隊用來擴充 Zoom 功能用的。
  2. JWT 是傳統的伺服器端App,不過已經快要淘汰(2023/6),所以不理它。
  3. OAuth 是走標準的第三方應用程式類型,如果你想做一個網站,在該網站中,想幫特定用戶建立會議、列出會議清單、抓取會議錄影資料…就用這種App。

其實我們想要整合在 Chat Bot 裡面的功能,本來應該採用上述 2. 這個類型的App,但Zoom官方說要停用了,因此我們採用底下這個新的類型:
圖片

當你按下Create鈕,會出現:
圖片

直接輸入app名稱,接著會出現底下畫面:
圖片

基本上就類似標準OAuth App申請流程,請照著填寫完所有內容,在Scopes這部分需要留意,你的App想要有哪些功能,就必須勾選,完成後,最後一個步驟是 Active 該App:

這時候,回頭看建立App的第一頁,你應該會得到幾個重要資訊:
圖片

包含 ClientID, ClientSecret, 以及 AccountID。有了這幾個資訊,我們就可以開始寫程式了。

你可以嘗試建立一個 Console App,撰寫底下程式碼(記得引用ZoomNet套件):

using System.Net;
using ZoomNet;
using ZoomNet.Models.Webhooks;

var connectionInfo = new OAuthConnectionInfo(
    "ClientID", "ClientSecret", "AccountID", null);
var zoomClient = new ZoomClient(connectionInfo);
var ret = zoomClient.Meetings.CreateScheduledMeetingAsync("你的zoom帳號email", "topic", "agenda", new DateTime(2023, 3, 26, 23, 0, 0), 90);
Console.Write("\n JoinUrl : " + ret.Result.JoinUrl);
Console.Write("\n meeting Id : " + ret.Result.Id);
Console.Write("\n meeting Password : " + ret.Result.Password);

輸出結果如下:
圖片

有沒有看到熟悉的資訊?
會議連結、會議ID、會議密碼…就這樣你的Zoom會議就自動建立起來囉。

接下來,如果能搭配 LINE Bot,透過 ChatGPT 來剖析自然語言,我們就可以建立一個Zoom會議建立小幫手了。

留言

這個網誌中的熱門文章

使用LM Studio輕鬆在本地端以API呼叫大語言模型(LLM)

VS Code的字體大小

使用 Dify 建立企業請假機器人

使用Qdrant向量資料庫實作語意相似度比對

使用C#開發LineBot(3) - 使用LineBotSDK發送Line訊息