microsoft-teams - 自定义机器人总是回复错误

标签 microsoft-teams

我正在尝试从 Teams 发送一个 webhook,这显然是通过 Custom Bot 完成的.我能够创建机器人,然后我可以执行 @botname stuff 并且端点接收有效负载。

但是,机器人会立即回复“抱歉,您的请求遇到问题”。如果我将“回调 URL”指向 requestb.in url 或者如果我将它指向我的端点,我会收到此错误。这让我怀疑机器人正在期待来自端点的一些特定响应,但这没有记录在案。我的端点以 202 和一些 json 响应。 Requestb.in 以 200 和“ok”响应。

那么,机器人是否真的需要特定的响应负载?如果需要,这个负载是什么?

上面的链接提到 您的自定义机器人将需要异步回复来自 Microsoft Teams 的 HTTP 请求。在连接终止之前,它将有 5 秒的时间来回复消息。 但是没有指示如何满足此请求,除非自定义 bot 需要同步回复。

最佳答案

您需要返回带有键“文本”和“类型”的 JSON 响应,如示例中所示 here

{
"type": "message",
"text": "This is a reply!"
}


如果您使用的是 NodeJS,您可以尝试 this sample code

我在 C# 中创建了一个 azure 函数作为自定义机器人的回调,并且最初发回了一个 json 字符串,但是没有用。最后,我必须设置响应对象的 ContentContentType 才能使其正常工作(如 here 所示)。这是一个简单机器人的代码,它可以回显用户在 channel 中输入的内容,您可以根据自己的情况随意调整它。

使用 azure 函数的自定义 MS Teams 机器人示例代码

#r "Newtonsoft.Json"
using System.Net;
using System.Net.Http.Headers;
using Newtonsoft.Json;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    log.Info("C# HTTP trigger function processed a request.");

    // parse query parameter
    string name = req.GetQueryNameValuePairs()
        .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
        .Value;

    // Get request body
    dynamic data = await req.Content.ReadAsAsync<object>();
    log.Info(JsonConvert.SerializeObject(data));
    // Set name to query string or body data
    name = name ?? data?.text;
    Response res = new Response();
    res.type = "Message";
    res.text = $"You said:{name}";
    var response = req.CreateResponse(HttpStatusCode.OK);
    response.Content = new StringContent(JsonConvert.SerializeObject(res));
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    return response;
}

public class Response {
    public string type;
    public string text;
}

关于microsoft-teams - 自定义机器人总是回复错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45743782/

相关文章:

node.js - Azure BotFrameworkAdapter 错误 400 缺少参数类型

microsoft-graph-api - MS Teams - 从外部应用程序向用户发送消息

microsoft-teams - 微软流量自适应卡片在团队中提及团队用户

node.js - Teams 中的主动消息传递机器人,无需事先提及该机器人

visual-studio-code - 使用 Teams Toolkit 进行调试时,应用程序不会旁加载

azure-active-directory - 团队 SSO/访问 token 交换

javascript - Amazon Lex 和 BotFramework 集成 TypeError : Cannot perform 'get' on a proxy that has been revoked at Response

java - MSGraph API 取消存档团队和恢复组不起作用

microsoft-teams - Teams 选项卡中的 SPFX - 移动应用程序中的滚动问题

azure - 使用 MS Graph API 和 Postman 调用 Teams,不支持 AAD Identity