首页 文章

Smooch:当用户点击按钮时如何触发回发?

提问于
浏览
1

我对回发按钮有一些疑问 .

我们正在使用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 回答

  • 1

    您应该调用triggerPostback方法以响应用户单击自定义按钮 . 根据您在上面发布的代码段,您正在调用方法 onChoiceButtonClick . 该方法的实现应如下所示:

    function onChoiceButtonClick(action) {
        Smooch.triggerPostback(action._id);
    }
    

相关问题