Teamsにメッセージの投稿が出来ない

taka 20 評価のポイント
2024-05-24T10:07:58.8+00:00

Visual Studio 2022 .NET8.0 にて、コンソールアプリケーションにて作成し、Nugetで Microsoft.Graph 5.54.0、Azure.Identity 1.11.3 を導入し、チャットにメッセージを送信しようとして、 現在下記のようなソースコードを作成しました。

using Azure.Identity;

using Microsoft.Graph;

using Microsoft.Graph.Models;

namespace ConsoleApp1

{

class Program

{

    static async Task Main(string[] args)

    {

        var clientId = "(クライアントID)";

        var tenantId = "(テナントID)";

        var clientSecret = "(シークレットの値)";

        var chatId = "(chatID)";

        var clientSecretCredential = new ClientSecretCredential(

            tenantId, clientId, clientSecret);

        var graphClient = new GraphServiceClient(clientSecretCredential);

        var requestBody = new ChatMessage

        {

            Body = new ItemBody

            {

                Content = "Hello world",

            },

        };

        var result = await graphClient.Chats[chatId].Messages.PostAsync(requestBody);

    }

}

}

するとgraphClient.Chats[chatId].Messages.PostAsyncから例外が発生し、

Microsoft.Graph.Models.ODataErrors.ODataError

Missing role permissions on the request. API requires one of 'Teamwork.Migrate.All'. Roles on the request

とのことで、権限が足りないというメッセージが返ってくるようです。

ただAzureAD上で具体的にどの権限をつければよいかわからず、Teamwork.Migrate.Allという内容を見つけられませんでした。

そこで質問なのですが、

1.チャットの送信にはどの権限をつければよいでしょうか?

2.そもそも上記エラーは本当に権限不足で返ってきているでしょうか?

 何かコード的に誤りがありますでしょうか?

3.chatIDが正しいかも怪しいです。グループチャットを作っており、

ttps://teams.live.com/_#/conversations/19:jp8wD9-dxsNmame-********-rw19DktnuhTBD6pMI1@thread.v2?ctx=chat

というアドレス(アスタリスクは修正)なのですが、?以前の「19:jp8wD9-dxsNmame-********-rw19DktnuhTBD6pMI1@thread.v2」

をIDとしていますが、これは正しいでしょうか?

わかりましたら、回答いただけますと助かります。

Visual Studio
Visual Studio
Windows、Web、モバイル デバイス用のアプリケーションを構築するための統合開発ツールの Microsoft スイートのファミリ。
88 件の質問
{count} 件の投票

承認済みの回答
  1. gekka 9,666 評価のポイント MVP
    2024-05-26T16:00:34.64+00:00

    ClientSecretによるアプリケーションアクセスのアクセス許可にはTeamwork.Migrate.All権限だけですが、注意にあるように制限されてます。

    委任の方であればChannelMessage.Send権限で投稿可能です。

    サンプル


0 件の追加の回答

並べ替え方法: 最も役に立つ

お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。