C#通过BOT框架发送模板Facebook消息



我正在开发具有Microsoft Bot Framework的Facebook Bot。我想向Facebook用户发送自定义消息,因此我使用自定义Channeldata方法。你可以在这里找到它:Channeldata配置。这是我的代码:

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"
}

从回复性活性酶返回的结果也为无效。有人有这个问题吗?谢谢。

正如我认为,您应该以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序列化对象,然后将其设置为回复。Channeldata。

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

对此的回答很晚,但是我在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);

最新更新