创建与用户的对话 -(SMS 通道)

Create Conversation with User - (SMS channel)

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

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

我能够通过连接器客户端与服务 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);