是否可以使用Azure URL Ping测试来测试Direct Bot是否还活着?

时间:2018-08-24 07:39:15

标签: azure botframework ping direct-line-botframework availability

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

它使用的是 Microsoft Bot Framework Direct Line API 3.0

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

在Bot的消息控制器中,这就是我处理Pings响应的方式。 在本地主机中运行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 Test不知道Direct Line机密。

感谢您的帮助。

非常感谢。

1 个答案:

答案 0 :(得分:2)

如果您查看Direct Line API 3.0文档中的“Send an activity to the bot”,则会发现:

  

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

URL ping test将对您指定的URL发送 GET 请求,但不会在您的中点击/触发为Ping活动定义的代码MessagesController

如果您想通过发送Ping活动来检测您的机器人是否还活着,则可以向客户端发出如下请求。

请求:

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

身体:

{
  "type": "ping",
  "from": {
    "id": "user1"
  }
}