【问题标题】:C# Send a template facebook message via bot frameworkC# 通过 bot 框架发送模板 facebook 消息
【发布时间】:2017-04-08 05:21:33
【问题描述】:

我正在使用 microsoft bot 框架开发一个 facebook bot。 我想向 facebook 用户发送自定义消息,所以我使用自定义 channelData 方法。你可以在这里找到它: channelData Config. 这是我的代码:

var reply = activity.CreateReply();
reply.ChannelData = new
                    {
                        attachment = (text as SendPackage).message.attachment,
                        notification_type = "NO_PUSH"
                    };
var result = await connector.Conversations.ReplyToActivityAsync(reply);

我在模拟器上测试过,但是 channelData 属性总是空的:

   {
  "type": "message",
  "timestamp": "2016-11-24T02:30:44.9047645Z",
  "from": {
    "id": "56800324",
    "name": "Bot1"
  },
  "conversation": {
    "id": "8a684db8",
    "name": "Conv1"
  },
  "recipient": {
    "id": "2c1c7fa3",
    "name": "User1"
  },
  "text": "",
  "channelData": {},
  "replyToId": "3f223b935086422da7ed36786ab05cb9"
}

ReplyToActivityAsync 返回的结果也为空。 有人遇到这个问题吗? 谢谢。

【问题讨论】:

    标签: facebook frameworks bots botframework messenger


    【解决方案1】:

    我认为,您应该将 Channel Data 设置为 Json 格式,而不是匿名对象。所以,我的建议是将频道数据设置如下:

    var channelData = "{";
    var channelData += "'notification_type' : 'NO_PUSH',";
    var channelData += "'attachment' : '" + text + "'";
    var channelData = "}";
    
    var reply = activity.CreateReply();
    reply.ChannelData = channelData;
    var result = await connector.Conversations.ReplyToActivityAsync(reply);
    

    另外,如果你想发送一个模型复杂的对象,你可以创建一个类模型,然后使用JsonConvert.Serialize序列化这个对象,然后将它设置到reply.ChannelData中。

    此外,如果您使用ngrok 在真实环境中测试您的机器人会更好。因此,您会在 Facebook Messenger 中从您的机器人收到真实的消息。

    【讨论】:

      【解决方案2】:

      对此的回答很晚,但我在用 C# 设置消息的 ChannelData 时遇到了类似的问题。

      一直对我有用的唯一方法是使用 Newtonsoft.Json 的 JObject.FromObject:

      例如:

      using Newtonsoft.Json.Linq;
      
      message.ChannelData = JObject.FromObject(new
      {
          notification_type = "REGULAR",
          // all your other channel-specific stuff here...
      });
      await context.PostAsync(message);
      

      【讨论】:

        猜你喜欢
        • 2018-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-09
        • 2017-08-20
        • 2013-11-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多