9

MSFT doc の説明のように、JSON メッセージをチャネルに送信する C# アプリまたは PS スクリプトから着信 Webhook を作成できます。

ただし、Slack が許可するように、アプリからユーザーに JSON メッセージを (プライベート メッセージとして) 送信するために、着信 Webhook を使用したいと考えています。

私の知る限り、これは MSFT Teams では不可能です: https://dev.outlook.com/Connectors/Reference

しかし、それを修正するための回避策やそのようなものを知っているかもしれません。

前もって感謝します :)

[編集済み] C# アプリで MSFT チームにメッセージを投稿するために使用されるコード:

//Post a message using simple strings
public void PostMessage(string text, string title)
{
    Payload payload = new Payload()
    {
        Title = title
        Text = test
    };
    PostMessage(payload);
}

//Post a message using a Payload object
public async void PostMessage(Payload payload)
{
    string payloadJson = JsonConvert.SerializeObject(payload);
    var content = new StringContent(payloadJson);
    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    var client = new HttpClient();
    uri = new Uri(GeneralConstants.TeamsURI);
    await client.PostAsync(uri, content);
}
4

1 に答える 1

8

この時点で目標を達成するための最善の方法は、ボットを作成して実装し、アプリまたはサービスが投稿できる Webhook エンドポイントを公開し、ボットがそれらのメッセージをユーザーとのチャットに投稿できるようにすることです。

ボットが受信した着信アクティビティに基づいて、ボットとユーザーの会話に正常に投稿するために必要な情報を取得することから始めます。

var callBackInfo = new CallbackInfo() 
{ 
     ConversationId = activity.Conversation.Id, 
     ServiceUrl = activity.ServiceUrl
};

次に、callBackInfo をトークンにパックします。このトークンは、後で Webhook のパラメーターとして使用されます。

 var token = Convert.ToBase64String(
     Encoding.Default.GetBytes(
         JsonConvert.SerializeObject(callBackInfo)));

 var webhookUrl = host + "/v1/hook/" + token;

最後に、webhook ハンドラーを実装して callBackInfo をアンパックします。

var jsonString = Encoding.Default.GetString(Convert.FromBase64String(token));
var callbackInfo = JsonConvert.DeserializeObject<CallbackInfo>(jsonString);

ボットとユーザーの会話に投稿します。

ConnectorClient connector = new ConnectorClient(new Uri(callbackInfo.ServiceUrl));

        var newMessage = Activity.CreateMessageActivity();
        newMessage.Type = ActivityTypes.Message;
        newMessage.Conversation = new ConversationAccount(id: callbackInfo.ConversationId);
        newMessage.TextFormat = "xml";
        newMessage.Text = message.Text;

        await connector.Conversations.SendToConversationAsync(newMessage as Activity);

ここで、このトピックに関する私のブログ投稿をご覧ください。これまでに Microsoft Teams ボットを作成したことがない場合は、私の他のブログ投稿をご覧ください。詳細な手順については、こちらを参照してください。

于 2016-11-03T19:26:06.523 に答える