-1

我有一个在 Azure 上运行的 Web App Bot。

它使用Microsoft Bot Framework Direct Line API 3.0

我想使用URL Ping 测试类型而不是多阶段 Web 测试来进行 Bot的可用性测试,因为我没有 Visual Studio 2017 企业版。

在 Bot 的消息控制器中,这就是我处理 Ping 响应的方式。在 localhost 中运行 Bot 时,我能够在 Bot 模拟器中获得预期的响应。

    else if (message.Type == ActivityTypes.Ping)
    {
        ConnectorClient client = new ConnectorClient(new Uri(message.ServiceUrl));
        var reply = message.CreateReply();
        reply.Text = "{Some message}";
        await client.Conversations.ReplyToActivityAsync(reply);
    }

但是,当我连接到 Azure 中的 Bot 时,我收到 HTTP 错误 500。

我不确定根本原因是什么,想知道是否是由于 URL Ping 测试不知道 Direct Line 机密。

感谢您在这方面的帮助。

非常感谢。

4

1 回答 1

2

如果您检查Direct Line API 3.0 文档中的“向机器人发送活动”</a>,您可以找到:

要将活动发送到机器人,客户端必须创建一个活动对象来定义活动,然后发出POST请求,在请求正文中指定活动对象。

URL ping 测试会将GET请求发送到您指定的 URL,它不会命中/触发您在MessagesControllerPing中为活动定义的代码。

如果您想通过发送Ping活动来检测您的机器人是否处于活动状态,您可以从您的客户端发出如下请求。

要求:

POST https://directline.botframework.com/v3/directline/conversations/{conversationId}/activities
Authorization: Bearer {directline_secret}
Content-Type: application/json

身体:

{
  "type": "ping",
  "from": {
    "id": "user1"
  }
}
于 2018-08-24T09:04:50.950 回答