【发布时间】:2016-04-28 20:52:08
【问题描述】:
我正在尝试在 Ruby 中为我的 Facebook Messenger 机器人定义一个“有效负载”。我的用例是,当用户看到结构化内容(带有按钮的故事)并单击按钮时,我不想将它们发送到 URL,而是想点击我的 webhook 并返回更多结构化内容。
所以,我已经尝试了几次迭代,但不确定我在哪里被绊倒了。我首先添加了一个消息事件:
messaging_event["entry"].first["messaging"].each do |msg|
puts msg
sender = msg["sender"]["id"]
if msg["message"] && msg["message"]["text"]
payload = msg["message"][“payload”]
我为添加文本做了一些非常相似的事情,那就是:
post '/webhook/' do
messaging_event = JSON.parse(request.body.read)
puts messaging_event
messaging_event["entry"].first["messaging"].each do |msg|
puts msg
sender = msg["sender"]["id"]
if msg["message"] && msg["message"]["text"]
text = msg["message"]["text"]
puts "Sender ID: #{sender}, Text: #{text}"
所以,在这一点上,我不确定是否需要进一步定义有效载荷,例如:
def payload(sender, payload)
data = {
recipient: { id: sender },
message: payload
}
send_message(data)
end
或者,如果我只需要创建一个变量并在我的 Module 对象中调用该变量,例如:
module Messages
SIMPLE_ONE_BUTTON_PAYLOAD = {
"attachment":{
"type":"template",
"payload":{
"template_type":"button",
"text":"Here's a simple button message",
"buttons":[
"type":"postback",
"title":"Button One",
"payload":"[variable I need to call]",
]
}
}
}
end
所以,这里真的有两件事——我是否需要有效负载消息传递事件并定义有效负载以及我需要在对象中调用什么?这里的任何想法或反馈都会非常有帮助。提前致谢!
【问题讨论】:
-
不确定是不是太晚了,但我创建了一个 gem 来处理这些用例:github.com/tinkerbox/message_quickly
标签: ruby facebook facebook-messenger