VB.netでTeamsに個人宛のチャットを送りたいのだがうまく行かない

kondo 0 評価のポイント
2024-07-17T01:44:02.4333333+00:00

以下のソースコードでやってみたのですがうまく行きません。。。

情報も少なく困っておりますうまく行った事例などあればご教授願います

Private Const clientId As String = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Private Const tenantId As String = "zzzzzzzzzzzzzzzzzzzzzzzzzzz"

Private Const clientSecret As String = "yyyyyyyyyyyyyyyyyyyyyyyy"

Private Const GraphApiEndpoint As String = "https://graph.microsoft.com/v1.0"

Private Async Sub button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

    Try

        Dim accessToken = Await GetAccessTokenAsync()

        Dim messageContent = "テストメッセージ!"

        Dim jsonBody = $"{{""body"": {{""content"": ""{messageContent}"", ""contentType"": ""html""}}}}"

        Dim recipientUserId = "KKKK@DDD.DD" 

        Dim otherServiceEndpoint = "chats" 

        Dim requestUrl = $"{GraphApiEndpoint}/users/{recipientUserId}/{otherServiceEndpoint}"

        Dim httpClient = New HttpClient()

        Dim request = New HttpRequestMessage(HttpMethod.Post, requestUrl)

        request.Headers.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken)

        request.Content = New StringContent(jsonBody, Encoding.UTF8, "application/json")

 

        Dim response = Await httpClient.SendAsync(request)

        ' 応答の処理

        If response.IsSuccessStatusCode Then

            Dim responseBody = Await response.Content.ReadAsStringAsync()

            TextBox1.Text = $"メッセージの送信に成功しました。レスポンス: {responseBody}"

        Else

            Dim errorMessage = $"エラー: {response.StatusCode} - {response.ReasonPhrase}"

            TextBox1.Text = errorMessage

        End If

    Catch ex As Exception

        TextBox1.Text = $"エラー: {ex.Message}"

    End Try

End Sub

Private Async Function GetAccessTokenAsync() As Task(Of String)

    Dim confidentialClient = ConfidentialClientApplicationBuilder _

        .Create(clientId) _

        .WithTenantId(tenantId) _

        .WithClientSecret(clientSecret) _

        .Build()

    Dim authResult = Await confidentialClient.AcquireTokenForClient({"https://graph.microsoft.com/.default"}).ExecuteAsync()

    Return authResult.AccessToken

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

3 件の回答

並べ替え方法: 最も役に立つ
  1. kondo 0 評価のポイント
    2024-07-17T08:53:49.91+00:00

    API連携はよくわかっていないためソースコードは生成AIで作成しました。

    office365コネクタTeams Webhookなどが完全に廃止されるされるとの事だったので「microsoft graph」を利用して個人チャットへの送信をしようとしていました。

    アプリから送信できるのであればあればどんな方式でも構わないので成功事例があれば参考にさせていただきたかったのです


  2. kondo 0 評価のポイント
    2024-07-18T23:23:14.6533333+00:00

    Hebikuzure aka Murachi Akiraさん

    ありがとうございます、AIにエラー内容を示すなどして修正や変更しながら作成したのですがうまく行きませんでした

    0 件のコメント コメントはありません

  3. kondo 0 評価のポイント
    2024-07-18T23:27:42.09+00:00

    Azuleanさん

    ありがとうございます

    今回のスニペットだと、/user/(ID) までで「ユーザー取得」のエンドポイントであり、その後に「/chat」が続くようなエンドポイントはないはずです。

    そうなんですね、参考になります

    WorkflowによるWebhookが第一候補になると思います。

    WorkflowのWebhookでチャンネルに投稿する事は出来ましたが、個人宛に送る方法がわかりませんでした。


お客様の回答

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