我对回发按钮有一些疑问。
我们正在使用Smooch开发独立构建的自己的Web Messenger。
我正在使用Smooch-core进行API调用。 (如下所示)
this.smooch = await new SmoochCore({
keyId: SMOOCH_KEY_ID,
secret: SMOOCH_SECRET,
....
});
...
await this.smooch.appUsers.sendMessage(this.appId, this.userId, message);
问题在于,当我们渲染并点击按钮时,它的工作方式与我们的意图不同。
要在Messenger窗口中创建按钮,应用制造商会发送一条带有回发类型操作的消息, 从webhook接收消息的有效负载, 然后呈现按钮并根据我们的系统政策处理点击操作。
这是应用程序制造商发送的消息代码
{
"role": "appMaker",
"type": "text",
"text": "check in/out infos",
"actions": [
{
"text": "Check In Info",
"type": "postback",
"payload": "{\"text\": \"Check in info\", \"type\": \"start\", \"flow\": \"checkInOut\", \"message_id\": \"MESSAGEID001\", \"data\": {\"intent\": \"info_check_in\"}}"
},
{
"text": "Check Out Info",
"type": "postback",
"payload": "{\"text\": \"Check out info\", \"type\": \"start\", \"flow\": \"checkInOut\", \"message_id\": \"MESSAGEID001\", \"data\": {\"intent\": \"info_check_out\"}}"
},
{
"text": "Early Check In Info,
"type": "postback",
"payload": "{\"text\": \"Early check in\", \"type\": \"start\", \"flow\": \"checkInOut\", \"message_id\": \"MESSAGEID001\", \"data\": {\"intent\": \"info_early_check_in\"}}"
}
]
}
我的系统使用ReactJS渲染消息的动作(按钮)。
<ul className={b('button-group')}>
{
actions.map((action, index) => {
return (
<li
key={index}
onClick={this.onChoiceButtonClick(action)}
>
<span>{action.text}</span>
</li>
);
})
}
</ul>
由于我正在处理系统中的按钮单击事件,因此我希望执行与点击Smooch提供的回发按钮相同的操作。
(即smooch.appUsers.sendMessage的“ trigger”:“ postback”,例如“ trigger”:“ message:appUser”)
我该如何处理?
如果您能给我一些建议,将不胜感激。 :)
答案 0 :(得分:1)
您应该调用triggerPostback
方法来响应用户单击自定义按钮的情况。根据上面发布的代码段,您正在调用方法onChoiceButtonClick
。该方法的实现应如下所示:
function onChoiceButtonClick(action) {
Smooch.triggerPostback(action._id);
}