Mor*_*gan 1 .net c# botframework direct-line-botframework
我正在尝试通过DirectLineClient库将活动发送到我的机器人:
var directLineClient = new DirectLineClient($"{secret}");
directLineClient.BaseUri = new Uri($"https://directline.botframework.com/");
var conversation = await directLineClient.Conversations.StartConversationAsync().ConfigureAwait(false);
var activity = new Microsoft.Bot.Connector.DirectLine.Activity();
activity.From = new Microsoft.Bot.Connector.DirectLine.ChannelAccount();
activity.From.Name = "Morgan";
activity.Text = message;
activity.Type = "message";
var resourceResponse = await directLineClient.Conversations.PostActivityAsync(conversation.ConversationId, activity).ConfigureAwait(false);
await ReadBotMessagesAsync(directLineClient, conversation.ConversationId);
Run Code Online (Sandbox Code Playgroud)
resourceResponse始终为null。
Nicolas R回答后编辑
我添加了一种方法来等待机器人的响应:
private static async Task ReadBotMessagesAsync(DirectLineClient client, string conversationId)
{
string watermark = null;
while (true)
{
var activitySet = await client.Conversations.GetActivitiesAsync(conversationId, watermark);
watermark = activitySet?.Watermark;
foreach (Microsoft.Bot.Connector.DirectLine.Activity activity in activitySet.Activities)
{
Console.WriteLine(activity.Text);
if (activity.Attachments != null)
{
foreach (Microsoft.Bot.Connector.DirectLine.Attachment attachment in activity.Attachments)
{
Console.WriteLine(attachment.ContentType);
}
}
}
if (activitySet.Activities.Count > 0)
{
return;
}
await Task.Delay(TimeSpan.FromSeconds(1)).ConfigureAwait(false);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我从不离开ReadBotMessagesAsync。
我精确地说,我可以通过HTTP请求(已通过Postman测试)与我的机器人进行通信,并且只要发送消息,它就应该发送响应消息。
OP精度后编辑
根据文档/样本,似乎PostActivityAsync
从未使用过此返回值,因此该值可能不相关。
从样本中:
await client.Conversations.PostActivityAsync(conversation.ConversationId, userMessage);
Run Code Online (Sandbox Code Playgroud)
在这里查看示例。
对于那些想了解更多细节的人,由于此答案仅限于与示例用法进行比较,因此,该软件包不是开源的:https://github.com/Microsoft/BotBuilder/issues/2756
我不建议使用DirectLineClient
位于以下位置的此Nuget软件包:https ://www.nuget.org/packages/DirectLineClient,
因为自2016年5月以来一直未维护,并且Bot Framework自那时以来发生了很大变化。
而且,它使用DirectLine API 1.0,这在当时还不是最佳实践。在这里查看文档:
重要
本文介绍Direct Line API 1.1中的关键概念,并提供有关相关开发人员资源的信息。如果要在客户端应用程序和漫游器之间创建新连接,请改用Direct Line API 3.0。
归档时间: |
|
查看次数: |
689 次 |
最近记录: |