如何從 C++ 向 Microsoft Teams 發佈訊息(WinHTTP + Graph API)
想自動發佈訊息到 Microsoft Teams 聊天室中嗎?
這時候可以使用的就是 Microsoft Graph API 。
在本文中,我們將透過步驟介紹 使用 WinHTTP 的 C++ 程式碼範例 以及 必要的 API 認證步驟 。
🔧 必要的準備(Microsoft Graph API 認證設定)
1. 在 Azure 入口網站註冊應用程式
首先,要使用 Microsoft Graph API,必須在 Azure 註冊應用程式。
- 前往 Azure Portal
- 「Microsoft Entra ID」 > 「+新增」 > 「應用程式註冊」 > 「新增註冊」
- 輸入任意應用程式名稱後點擊「註冊」
2. 新增 API 權限
- 前往左側選單的「API 權限」
- 在 「Microsoft Graph」 > 「新增權限」 中搜尋以下範圍,然後點擊 「更新權限」
- Chat.ReadWrite
- User.Read
※ 若想要發佈到頻道,則還需要
ChannelMessage.Send
3. 記下用戶端識別碼與租用戶識別碼
記下顯示在「概觀」索引標籤中的以下兩項:
- 應用程式 (用戶端) 識別碼
- 目錄 (租用戶) 識別碼
4. 建立用戶端密碼
- 前往「憑證與密碼」索引標籤
- 點擊「新增用戶端密碼」 > 設定到期日後,點擊「新增」
- 顯示的值(密碼)請 務必當下立刻記下
🔐 取得存取權杖(OAuth2)
取得時我們使用 client_credentials 流程。
使用 curl 執行以下命令,以取得存取權杖。
| |
回應範例
| |
使用此 access_token 來呼叫 Microsoft Graph API。
💬 投稿到 Teams 聊天室的 C++ 範例
這裡示範使用 WinHTTP 向聊天室發佈訊息的 C++ 範例。
| |
🔍 取得聊天室識別碼的方法
聊天室識別碼可以透過 GET /v1.0/me/chats 來確認。
| |
回應範例
| |
📌 注意事項
- 此範例為最基本實作。在實際運用中:
- 權杖過期處理
- HTTPS 憑證驗證
- 錯誤處理的強化
- 頻道發佈請使用 teams/{team-id}/channels/{channel-id}/messages 。
- 傳送附件檔案需要多部分處理 (multipart) 或 Graph Drive API。
總結
📎 總結
| 功能 | 概要 |
|---|---|
| Graph API | 與 Teams 互動的官方 API |
| 應用程式註冊 | Azure 上必要的認證手續 |
| 存取權杖 | 透過 OAuth2 取得,並用於請求中 |
| C++ 實作 | 使用 WinHTTP 呼叫 Graph API |
🚀 下一步
作為更進階的範例,以下也是可行的:
- 團隊頻道發佈 (
/teams/{team-id}/channels/...) - 帶有附件檔案的發佈
- 機器人帳號或使用者帳號的切換
- 包含取得權杖在內的完整 C++ 實作
如有任何需求,歡迎隨時留言!
