Сбой вызова службы лазурного бота через websocket - PullRequest
0 голосов
/ 03 июля 2018

У меня есть бот-сервис Azure, который отлично работает при тестировании на веб-чате. Теперь я попытался открыть веб-сокет и протестировать бота.

  1. Сначала я отправляю запрос POST (со всеми необходимыми заголовками) на https://directline.botframework.com/v3/directline/conversations

  2. Я получаю ответ с

    {

    "разговорный идентификатор": "7FY18sO6FCT9OVi0pW7WBY",

    "токен": "my_token_here",

    "expires_in": 1800,

    "streamUrl": "wss: //directline.botframework.com/v3/directline/conversations/7FY18sO6FCT9OVi0pW7WBY/stream? watermark = - & t = token_value_here",

    "referenceGrammarId": "c1c290dd-f896-5857-b328-cdc10298e440"

    }

Теперь я пытаюсь использовать streamUrl для отправки / получения данных через веб-сокет. Я получил ошибку: Undefined

Я пытался протестировать streamUrl на другом инструменте тестирования веб-сокетов. Я все еще получил неопределенную ошибку.

Как я могу проверить, есть ли проблема в streamUrl? Как я могу проверить веб-сокет?

1 Ответ

0 голосов
/ 05 июля 2018

Во-первых, как упоминал Эрик Дальванг, это позволяет нам получать действия через поток WebSocket , но не отправлять действия.

Кроме того, я делаю тест со следующими шагами и примером, действия могут быть получены, как и ожидалось, через поток WebSocket, вы можете обратиться к нему.

Шаг 1: отправить запрос на начать разговор

enter image description here

Шаг 2: запустить клиентское приложение (консольное приложение) для ожидания получения действий

class Program
{
    private static string botId = "fehanbasicbot";

    static void Main(string[] args)
    {
        var url = Console.ReadLine();
        StartReceivingActivities(url).Wait();
        Console.ReadLine();
    }

    private static async Task StartReceivingActivities(string url)
    {
        var webSocketClient = new WebSocket(url);
        webSocketClient.OnMessage += WebSocketClient_OnMessage;
        webSocketClient.Connect();
    }

    private static void WebSocketClient_OnMessage(object sender, MessageEventArgs e)
    {
        // Occasionally, the Direct Line service sends an empty message as a liveness ping. Ignore these messages.
        if (string.IsNullOrWhiteSpace(e.Data))
        {
            return;
        }

        var activitySet = JsonConvert.DeserializeObject<ActivitySet>(e.Data);
        var activities = from x in activitySet.Activities
                            where x.From.Id == botId
                            select x;

        foreach (Activity activity in activities)
        {
            Console.WriteLine(activity.Text);
        }
    }
}

packages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.Bot.Connector.DirectLine" version="3.0.2" targetFramework="net461" />
  <package id="Microsoft.Rest.ClientRuntime" version="2.3.2" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net461" />
  <package id="WebSocketSharp" version="1.0.3-rc11" targetFramework="net461" />
</packages>

Шаг 3: сделать запрос на отправить активность боту

enter image description here

Step4: проверьте вывод приложения консоли, я могу найти действия, полученные

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...