【发布时间】:2016-09-05 05:42:07
【问题描述】:
我已经开始使用 C# 中的 Bot Builder SDK 和 Microsoft Bot Framework 来开发我的聊天机器人。我已经部署了我的机器人并可以与之交互。目前我专注于facebook messenger。我已经可以使用 Microsoft.Bot.Connector.Attachment 在 Messenger 上显示卡片和按钮。您可以在Bot Connector Documentation 中找到它。 现在我正在尝试实现自定义 Facebook 消息,但没有成功。 这是我的代码:
public async Task<Message> Post([FromBody]Message message)
{
if (message.Type == "Message")
{
message.BotPerUserInConversationData = null;
if (message.Text.Equals("test", StringComparison.InvariantCultureIgnoreCase))
{
var replyMessage = message.CreateReplyMessage();
replyMessage.ChannelData = new
{
notification_type = "NO_PUSH",
attachment = new
{
type = "template",
payload = new
{
template_type = "receipt",
recipient_name = "Stephane Crozatier",
order_number = "12345678902",
currency = "USD",
payment_method = "Visa 2345",
order_url = "http://petersapparel.parseapp.com/order?order_id=123456",
timestamp = "1428444852",
elements = new[]
{
new {
title = "Classic White T-Shirt",
subtitle = "100% Soft and Luxurious Cotton",
quantity = 2,
price = 50,
currency = "USD",
image_url = "http://petersapparel.parseapp.com/img/whiteshirt.png"
},
new
{
title = "Classic Gray T-Shirt",
subtitle = "100% Soft and Luxurious Cotton",
quantity = 1,
price = 25,
currency = "USD",
image_url = "http://petersapparel.parseapp.com/img/grayshirt.png"
}
},
address = new
{
street_1 = "1 Hacker Way",
street_2 = "",
city = "Menlo Park",
postal_code = "94025",
state = "CA",
country = "US"
},
summary = new
{
subtotal = 75.00,
shipping_cost = 4.95,
total_tax = 6.19,
total_cost = 56.14
},
adjustments = new[]
{
new {name = "New Customer Discount", amount = 20},
new {name = "$10 Off Coupon", amount = 10}
}
}
}
};
return replyMessage;
}
// return our reply to the user
try
{
return await Conversation.SendAsync(message, () => new EchoDialog());
}
catch (Exception exc)
{
return message.CreateReplyMessage(exc.Message);
}
}
else
{
return HandleSystemMessage(message);
}
}
例如,EchoDialog 正在工作并且我得到了结果。我可以在机器人框架界面中获取数据。这是我从机器人那里得到的 json:
{
"type": "Message",
"id": "CeBI3NS7w0k",
"conversationId": "D9b6pW1TY29TDUB5qx6CL5U59fv49oBQK5iKABIA0nFC0C8C",
"created": "2016-05-10T09:34:46.5131971Z",
"language": "en",
"text": "",
"attachments": [],
"from": {
"name": "TestBot",
"channelId": "test",
"address": "mytestbot",
"id": "mytestbot",
"isBot": true
},
"to": {
"name": "devportal",
"channelId": "test",
"address": "devportal",
"id": "JMQ0KLCKN6R",
"isBot": false
},
"replyToMessageId": "FUjcCRhTmu0",
"participants": [
{
"name": "devportal",
"channelId": "test",
"address": "devportal",
"id": "JMQ0KLCKN6R",
"isBot": false
},
{
"name": "TestBot",
"channelId": "test",
"address": "mytestbot",
"id": "mytestbot",
"isBot": true
}
],
"totalParticipants": 2,
"mentions": [],
"channelConversationId": "mytestbot",
"channelData": {
"notification_type": "NO_PUSH",
"attachment": {
"type": "template",
"payload": {
"template_type": "receipt",
"recipient_name": "Stephane Crozatier",
"order_number": "12345678902",
"currency": "USD",
"payment_method": "Visa 2345",
"order_url": "http://petersapparel.parseapp.com/order?order_id=123456",
"timestamp": "1428444852",
"elements": [
{
"title": "Classic White T-Shirt",
"subtitle": "100% Soft and Luxurious Cotton",
"quantity": 2,
"price": 50,
"currency": "USD",
"image_url": "http://petersapparel.parseapp.com/img/whiteshirt.png"
},
{
"title": "Classic Gray T-Shirt",
"subtitle": "100% Soft and Luxurious Cotton",
"quantity": 1,
"price": 25,
"currency": "USD",
"image_url": "http://petersapparel.parseapp.com/img/grayshirt.png"
}
],
"address": {
"street_1": "1 Hacker Way",
"street_2": "",
"city": "Menlo Park",
"postal_code": "94025",
"state": "CA",
"country": "US"
},
"summary": {
"subtotal": 75,
"shipping_cost": 4.95,
"total_tax": 6.19,
"total_cost": 56.14
},
"adjustments": [
{
"name": "New Customer Discount",
"amount": 20
},
{
"name": "$10 Off Coupon",
"amount": 10
}
]
}
}
},
"hashtags": []
}
*ID 和名称已更改。
有没有人设法让 FB Messenger 使用 ChannelData 显示模板?
更新:我从另一个fb帐户检查并成功获取模板,但只是第一次。每次下一次尝试都让我没有回应。
【问题讨论】:
标签: c# botframework facebook-messenger chatbot