为什么不快速回复我在部署时在Facebook Messenger上设置Wit.ai工作?

时间:2016-11-15 11:20:14

标签: facebook facebook-graph-api facebook-messenger wit.ai

我使用Wit.ai在facebook Messenger上创建聊天机器人。但是,如果我为某个用户输入设置了快速回复,部署了机器人并输入了所述输入,我只会看到快速回复按钮应该遵循的文本。

1 个答案:

答案 0 :(得分:0)

我假设你在Node.js SDK中使用了messenger例子。

此代码不支持quickreplies。首先,您可以使用我的代码在sendTextMessage函数中实现所需的功能:

const sendMessage = (id, message) => {
  const body = JSON.stringify({
    recipient: { id },
    message: message,
  });
  const qs = 'access_token=' + encodeURIComponent(FB_PAGE_TOKEN);
  return fetch('https://graph.facebook.com/me/messages?' + qs, {
    method: 'POST',
    headers: {'Content-Type': 'application/json'},
    body,
  })
  .then(rsp => rsp.json())
  .then(json => {
    if (json.error && json.error.message) {
      throw new Error(json.error.message);
    }
    return json;
  });
};

const sendTextMessage = (id, text, quickreplies) => {
  if(!quickreplies) return sendMessage(id, {text});

  if(quickreplies.length > 10) {
    throw new Error("Quickreplies are limited to 10");
  }

  let body = {text, quick_replies: []};
  quickreplies.forEach(qr => {
    body.quick_replies.push({
      content_type: "text",
      title: qr,
      payload: 'PAYLOAD' //Not necessary used but mandatory
    });
  });
  return sendMessage(id, body);
};

其次,你必须考虑"发送"中的快速重复。行动。这是一个非常简单的"发送动作"例如:

const actions = {
  send({sessionId}, {text, quickreplies}) {
    const recipientId = sessions[sessionId].fbid;
    return sendTextMessage(recipientId, text, quickreplies);
  }
}

编辑:另外,请注意,信使快速安全限制为20个字符。