Smooch:如何在用户单击按钮时触发回发?
Smooch: How to trigger postback when user clicks a button?
我对回发按钮有一些疑问。
我们正在使用 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 window 中创建一个按钮,应用程序制造商会发送一条带有回发类型操作的消息,
从 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 提供的回发按钮相同的动作。
(即 "trigger": "postback" ,如 "trigger":"message:appUser" 代表 smooch.appUsers.sendMessage )
我该如何处理?
如果您能给我一些建议,将不胜感激。 :)
您应该调用 triggerPostback
方法来响应用户单击您的自定义按钮。根据您在上面发布的代码片段,您正在调用一个方法 onChoiceButtonClick
。该方法的实现应如下所示:
function onChoiceButtonClick(action) {
Smooch.triggerPostback(action._id);
}
我对回发按钮有一些疑问。
我们正在使用 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 window 中创建一个按钮,应用程序制造商会发送一条带有回发类型操作的消息, 从 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 提供的回发按钮相同的动作。
(即 "trigger": "postback" ,如 "trigger":"message:appUser" 代表 smooch.appUsers.sendMessage )
我该如何处理?
如果您能给我一些建议,将不胜感激。 :)
您应该调用 triggerPostback
方法来响应用户单击您的自定义按钮。根据您在上面发布的代码片段,您正在调用一个方法 onChoiceButtonClick
。该方法的实现应如下所示:
function onChoiceButtonClick(action) {
Smooch.triggerPostback(action._id);
}