我正在尝试使用 Microsoft.Bot.Connector.DirectLine .NET 客户端连接到我的 Direct Line 通道。我的客户端应用程序将同时打开许多对话(例如 1000 多个)。我想要做的是有效地创建一个 Direct Line 客户端对象,它可以接收我所有对话的消息,并且每个对话没有一个客户端。下面的代码来自: https://learn.microsoft.com/en-us/azure/bot-service/bot-service-channel-directline-extension-net-client ?view=azure-bot-service-4.0问题是,要创建一个新的对话,我需要创建一个新的客户端,我认为这最终会耗尽大量的套接字。有谁知道我是否可以创建一个连接然后监听多个对话?谢谢static async Task Main(string[] args){ Console.WriteLine("What is your name:"); var UserName = Console.ReadLine(); var tokenClient = new DirectLineClient( new Uri(endpoint), new DirectLineClientCredentials(secret)); var conversation = await tokenClient.Tokens.GenerateTokenForNewConversationAsync(); var client = new DirectLineClient( new Uri(endpoint), new DirectLineClientCredentials(conversation.Token)); await client.StreamingConversations.ConnectAsync( conversation.ConversationId, ReceiveActivities); var startConversation = await client.StreamingConversations.StartConversationAsync(); var from = new ChannelAccount() { Id = startConversation.ConversationId, Name = UserName }; var message = Console.ReadLine(); while (message != "end") { try { var response = await client.StreamingConversations.PostActivityAsync( startConversation.ConversationId, new Activity() { Type = "message", Text = message, From = from, ChannelData = new Common.ChannelData() { FromNumber = "+17081234567"} }); } catch (OperationException ex) { Console.WriteLine( $"OperationException when calling PostActivityAsync: ({ex.StatusCode})"); } message = Console.ReadLine(); } Console.ReadLine();}
1 回答
四季花海
TA贡献1811条经验 获得超5个赞
我认为使用 Direct Line 流媒体扩展对于您的目的来说会有问题。我猜您的自定义短信渠道本身就是一项应用服务。由于应用程序服务可以(并且可能应该,在您的情况下)进行扩展,以便多个实例同时运行,假设来自同一对话的两条短信发送到您的频道的两个实例。除了让频道的每个实例使用许多 Web 套接字与许多机器人对话之外,频道的多个实例还可能使用重复的 Web 套接字与同一个机器人对话。还有每个机器人本身需要支持流扩展的问题。
您可以考虑使用传统的 Direct Line,而不是使用 Direct Line 流扩展。这将涉及通过轮询 Direct Line 端点来接收来自机器人的活动。
由于 Direct Line 本身就是您在自己的频道之上使用的频道,因此您也可以考虑完全删除 Direct Line。这样,用户和机器人之间就不会有两个通道。您可以直接向每个机器人的端点发送 HTTP 请求,机器人将接收的活动将包含您频道的服务 URL,从而允许您的频道接收来自机器人的消息。
- 1 回答
- 0 关注
- 76 浏览
添加回答
举报
0/150
提交
取消