我们可以使用Node js作为服务器从另一个机器人向一个机器人发送消息吗?

时间:2019-07-04 11:25:40

标签: node.js slack slack-api servicenow dialogflow-fulfillment

我正在开发一个项目,其中一个机器人必须在松弛状态下与另一个机器人对话,并使其执行某些任务。我想知道是否有API或其他东西,可以使用Node js将消息从一个机器人发布到另一个机器人。 dmy bot之一就是现在服务虚拟代理。现在如何使服务的虚拟代理监听我的主要bot,它是由dialogflow组成的。

1 个答案:

答案 0 :(得分:0)

您可以通过Events API通过侦听消息事件来检索发布在Slack工作空间中(限制范围内)的所有消息,例如message.channels收听在公共频道发布的所有消息。

消息事件包括消息的完整副本,因此您可以根据需要将该副本转发到另一个漫游器,例如通过添加@bot提及并将其重新发布到同一频道中或向其他bot发送直接消息。

但是-其他机器人是否会识别出您机器人发出的消息,很大程度上取决于它的设计方式。来自用户和漫游器的消息通常看起来有所不同,许多漫游器会忽略非用户的消息。

来自用户的示例消息:

{
    "team": "T1234567",
    "text": "hi",
    "ts": "1516240585.000208",
    "type": "message",
    "user": "U12345678"
}

机器人发出的示例消息:

{
    "bot_id": "B12345678",        
    "subtype": "bot_message",
    "text": "Hi",
    "ts": "1516582987.000123",
    "type": "message",
    "username": "My Bot"
}

有一个例外。可以使用与客户端上发布的消息没有区别的API创建用户消息。就像任何消息一样,这些应该由另一个机器人来拾取。

方法如下:

  • 使用chat.postMessage发送消息
  • 在API调用中使用用户的user token(又名Oauth访问令牌)(不是机器人令牌)
  • 将API参数as_user设置为true