1

我查看了 GIT 中提供的主动消息示例和 createNewConveration 机器人示例。这两个示例都表明对话是在频道帐户最初与机器人交互后开始的。我需要创建一个机器人,它可以与以前从未与我的机器人交互过的用户(特别是 SMS)开始对话。我有有效的 ID(在本例中为短信号码)来创建频道帐户对象和我想用作消息活动的生产者的 twilio 电话号码。

2 个问题:1) 为了使用连接器客户端并创建直接对话,用户之前是否必须与我的机器人进行过交互?如果是这样,有没有办法将此频道帐户数据加载到机器人数据存储中以便我创建对话?2) 未来的版本会允许我们的机器人(通过 api)与有效的频道帐户开始对话吗?该 api 允许我创建对话有点误导。它应该被命名为“resumeConversation”。

4

1 回答 1

2

我能够通过连接器客户端使用服务 url 开始对话:https : //sms.botframework.com 和机器人应用程序凭据。我注意到在我的跟踪记录器中,频道帐户 ID 包含短信号码中的国家代码。在这种情况下,频道 accountId 的格式应为 +1[areacode][number]。我的主动问候已成功发送。因此,我相信 SMS 渠道将允许从 BOT 开始与用户进行对话。

在这种情况下,ServiceUrl 是https://sms.botframework.com用于短信通道。这

 var serviceUrl = GetServiceUrlByChannelId(channel);
  MicrosoftAppCredentials.TrustServiceUrl(serviceUrl, DateTime.Now.AddDays(7)); //todo change magic number
  var account = new MicrosoftAppCredentials([MicrosoftAppId], [MicrosoftAppPassword]);

  _connector = new ConnectorClient(new Uri(serviceUrl), account);

  var botAccount = new ChannelAccount { Id = bot.Id, Name = bot.Name };
  var toAccount = new ChannelAccount { Id = recipient.Id, Name = recipient.Name };

  if (!MicrosoftAppCredentials.IsTrustedServiceUrl(serviceUrl)) {
    throw new Exception("Cannot create conversation! Service URL is not trusted!");
  }

  var conversationResponse = _connector.Conversations.CreateDirectConversation(botAccount, toAccount);
于 2017-03-31T23:47:42.437 回答