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);
}