在微软团队的私人消息传入Webhook

本文关键字:消息 Webhook 微软 团队 | 更新日期: 2023-09-27 18:16:16

我可以创建一个来自c#应用程序或PS脚本的传入webhook,向MSFT doc解释等通道发送JSON消息。

然而,我想使用我的传入webhook从我的应用程序发送JSON消息给用户(作为私人消息)像Slack允许。

据我所知,这是不可能的微软团队:https://dev.outlook.com/Connectors/Reference

但是也许你知道任何解决方法或类似的东西来修复它。

Thanks in advance:)

[EDITED]通过c# App向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);
}

在微软团队的私人消息传入Webhook

在这一点上实现目标的最佳方法是创建一个Bot并实现它来公开一个webhook端点,您的应用程序或服务可以将这些消息发布到该端点,并让Bot将这些消息发布到与用户聊天。

首先根据bot接收到的传入活动捕获成功发布到bot与用户的对话所需的信息。

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 bot,可以看看我的另一篇博客文章,里面有详细的说明。