2

我在recast.ai上创建了一个我想与 slack 集成的机器人。现在它的bot 连接器正在询问我在 localhost 上运行的 bot 的端点(由 ngrok 转发)。现在我的问题是:

  1. 我的机器人实际上是在我的机器上而不是在我的机器上运行 recast.ai(我创建和训练的),那么我该如何转发它(与 Microsoft LUIS 相同,我相信)?
  2. 我应该为我的 recast.ai 机器人开发一个解析器并托管它,那么机器人连接器的含义是什么?
4

1 回答 1

3

您的机器人未在 Recast.AI 上运行。Recast.AI 是一个平台和 API,您可以在其中训练机器人了解用户的输入。但是您需要创建一个接收用户输入的脚本并将其发送到 Recast.AI API 进行分析。

Bot Connector 可帮助您将脚本连接到任何频道(如 messenger 或 slack),并从这些频道接收所有用户的输入。

所以你需要在本地运行你的脚本(也就是你的机器人),使用 ngrok 并在机器人连接器界面中设置这个 URL 以接收来自用户的每条消息。

如果您在 NodeJs 中制作机器人,您的脚本将如下所示:

npm install --save recastai recastai-botconnector express body-parser 

您的文件 index.js:

/* module imports */
const BotConnector = require('recastai-botconnector')
const recastai = require('recastai')
const express = require('express')
const bodyParser = require('body-parser')

/* Bot Connector connection */
const myBot = new BotConnector({ userSlug: 'YOUR_USER_SLUG', botId: 'YOUR_BOT_ID', userToken: 'YOUR_USER_TOKEN' })

/* Recast.AI API connection */
const client = new recastai.Client('YOUR_REQUEST_TOKEN')

/* Server setup */
const app = express()
const port = 5000

app.use(bodyParser.json())
app.post('/', (req, res) => myBot.listen(req, res))
app.listen(port, () => console.log('Bot running on port', port))

/* When a bot receive a message */
myBot.onTextMessage(message => {
  console.log(message)
  const userText = message.content.attachment.content
  const conversationToken = message.senderId

  client.textConverse(userText, { conversationToken })
    .then(res => {
      // We get the first reply from Recast.AI or a default reply
      const reply = res.reply() || 'Sorry, I didn\'t understand'

      const response = {
        type: 'text',
        content: reply,
      }

      return message.reply(response)
    })
    .then(() => console.log('Message successfully sent'))
    .catch(err => console.error(`Error while sending message: ${err}`))
})

运行你的机器人

node index.js
于 2017-01-26T09:24:42.927 回答