Встраивание настроенного бота потока форм в пользовательский клиент

Я создал настроенный поток формы. Я собираюсь интегрировать его в свой клиент. Для этого я создал бота шаблона формы на портале Azure и опубликовал свой обновленный код.

Я не хочу использовать окно чата по умолчанию, я хочу интегрировать его в свое окно чата. Для этого я установил прямой канал.

Вот мой код:-

public string TalkToTheBot2(string paramMessage)
{
    DirectLineClient client = new DirectLineClient(DirectLineSecret);
    Conversation conversation = System.Web.HttpContext.Current.Session["conversation"] as Conversation;
    string watermark = System.Web.HttpContext.Current.Session["watermark"] as string;
    if (conversation == null)
    {
        conversation = client.Conversations.StartConversation();
    }
    Activity message = new Activity
    {
       Text = paramMessage,
       From = new ChannelAccount(),
       Type = ActivityTypes.Message
    };
    var result = client.Conversations.PostActivityAsync(conversation.ConversationId, message).Result;
    Chat objChat = ReadBotMessagesAsync(client, conversation.ConversationId, watermark);
    System.Web.HttpContext.Current.Session["conversation"] = conversation;
    System.Web.HttpContext.Current.Session["watermark"] = objChat.watermark;
    objChat.ChatMessage = paramMessage;
    return JsonConvert.SerializeObject(objChat);
}

private Chat ReadBotMessagesAsync(DirectLineClient client, string conversationId, string watermark)
{
    Chat objChat = new Chat();
    bool messageReceived = false;
    while (!messageReceived)
    {
        var activitySet = client.Conversations.GetActivitiesAsync(conversationId, watermark).Result;
        watermark = activitySet?.Watermark;
        var activities = from x in activitySet.Activities
                                 where x.From.Id == botId
                                 select x;
        foreach (Activity message in activities)
        {
          if (message.Text != null)
          {
              objChat.ChatResponse
                 += " "
                 + message.Text.Replace("\n\n", "<br />");
          }
          if (message.Attachments.Count > 0)
          {
              bjChat.ChatResponse
                  += " " + RenderImageHTML(message.Attachments[0].ContentUrl);
          }
        }
        messageReceived = true;
    }
     objChat.watermark = watermark;
     return objChat;
}

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

Для обнаружения вложений я сейчас использую message.Attachments.Count,

Я не знаю, как управлять опциями.

1 ответ

В настоящее время для обнаружения вложений я использую message.Attachments.Count. Я не знаю, как управлять опциями.

Я делаю тест с ботом SandwichOrder (используя FormFlow), и я делаю запрос на получение сообщений с помощью Direct Line API и проверяю ответ, я нахожу, что параметры содержатся в buttons подал и ContentType является application/vnd.microsoft.card.hero,

Как и вы, вы можете определить, являются ли вложения пустыми. И для доступа и извлечения параметров, вы можете обнаружить ContentType и получить варианты от content,

Пример ответа в моем тесте:

введите описание изображения здесь

Другие вопросы по тегам