Встраивание настроенного бота потока форм в пользовательский клиент
Я создал настроенный поток формы. Я собираюсь интегрировать его в свой клиент. Для этого я создал бота шаблона формы на портале 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
,
Пример ответа в моем тесте: