【问题标题】:Create Conversation with User - (SMS channel)与用户建立对话 - (短信渠道)
【发布时间】:2017-03-27 18:20:49
【问题描述】:

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

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

【问题讨论】:

    标签: sms botframework proactive


    【解决方案1】:

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

    【讨论】:

    • 嘿@jay-tina 你能分享一下你是如何将机器人应用程序信用发布到终点的吗?
    • 我刚刚在我的答案@jsw324 中添加了一个代码 sn-p。这回答了你的问题了吗?我不确定您要调用哪个端点。使用 ConnectorClient 实例和新创建的 conversationId,我现在可以向最终用户发送消息(conversationId 和 serviceURL)。
    • 知道了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-12-03
    • 2011-06-06
    • 1970-01-01
    • 2018-10-04
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多