我对回发按钮有一些疑问 .
我们正在使用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接收消息的有效负载,然后根据我们的系统策略呈现按钮并处理单击操作 .
这是app maker发送的消息代码
{
"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提供的回发按钮相同的操作 .
(即“触发器”:“回发”,如“触发器”:“message:appUser”,用于smooch.appUsers.sendMessage)
我怎么处理这个?
如果你能给我一些建议,我将不胜感激 . :)
1 回答
您应该调用triggerPostback方法以响应用户单击自定义按钮 . 根据您在上面发布的代码段,您正在调用方法
onChoiceButtonClick
. 该方法的实现应如下所示: