我正在开发一个Slack应用程序,该应用程序也链接到一个Web应用程序,用户可以使用Slack登录.这是很常见的一个新用户既需要登录到Web应用程序,并添加该应用懈怠.
我想通过OAuth一次性让他们这样做.由于Web应用程序需要每个用户的姓名,电子邮件地址和个人资料图片,因此我将"identity.basic","identity.email"等范围添加到"Add to Slack"按钮请求的范围内.但事实证明,Slack不允许这样做.Slack OAuth页面显示" 请求的权限无效:无法同时请求身份范围和其他范围".
一种替代方案可能是请求用户:read和users:read.email范围而不是标识范围.但是,这为我们的应用提供了超出其需求的访问权 它只需要当前用户的信息,而不是团队中的所有用户.(它可能稍后需要所有用户的信息,所以无论如何我都在考虑这样做,但我不确定用户是否会喜欢它.)
另一种选择似乎是让用户通过两个不同的OAuth权限屏幕.但这似乎很麻烦,而且用户体验也不好.
所以问题是(1)是否有更好的方法,以及(2)为什么Slack不允许将身份范围与其他范围相结合?
更新以澄清,以回应@ erik-kalkoken的回答:
我知道"Add to Slack"和"Sign with with Slack"之间的区别.我当然不打算取消大多数用户做一个简单的"用Slack登录"的选项.但是,对于这个特定的应用程序,没有登录到Web应用程序就做"添加到Slack"是没有意义的.这需要由每个Slack团队的一个人完成,然后该团队的其他用户才能使用它.我们对新团队的入职流程有点麻烦,我正在寻找方法让它变得更简单,更顺畅.由于登录和添加步骤理论上可以合并为一个步骤,我宁愿这样做.
部分原因可能是因为我们没有开发"Slack app"; 我们正在为Web应用程序开发Slack集成.Web应用程序可以在不使用Slack的情况下使用,并且具有自己的用户和社区概念.
这个应用程序的范围:bot,channels:write,emoji:read,users:read,users:read.email
我发现如何只发送消息作为DM或webhooks,但没有范围.有谁有想法?
为了实现一个松散的机器人,我需要处理松弛的"实时消息传递API".它是一个基于WebSocket的API,允许您实时从Slack接收事件并以用户身份发送消息.更多信息:https://api.slack.com/rtm
要仅为一个团队创建机器人,我需要打开一个websocket连接并监听事件.
为另一个团队提供slack bot.我需要打开一个新的websocket连接.所以,
我该怎么做才能为无尽的团队扩展我的websocket连接?
什么样的架构可以处理1000个websockets连接的自动缩放?
有没有一个Slack用户组/社区致力于所有IntelliJ Idea,如键盘快捷键,插件,支持查询,功能讨论等,如果是这样,它的URL是什么?谢谢.
我通过Slack App向用户发送带有按钮的松弛消息.每次单击该按钮,我都会生成一个新URL.
目前,我可以将URL作为消息返回.用户单击该消息以在浏览器中打开URL.
我想使用松弛API直接在浏览器中打开URL,而不是发回消息.
我怎么能完成它?我似乎无法在文档中找到任何内容.
谢谢
PS:Google Drive集成已经做到了.
我需要配置Jenkins在我们的Slack频道#builds上发送通知.我在Slack中配置了Jenkins CI集成.结果,我有一个标记"abcdefgh666",当我展开"安装说明"时,我可以看到我们的团队域名是"mysuperteam".我们用网址http://mysuperteam.slack.com连接到slack
我被困在第3步.在Slack doc上,屏幕截图如下:
但在我们的Jenkins版本中,视图看起来像:
显然,"测试连接"按钮始终返回"失败".在Jenkins日志中,我有很多次:
Mar 30, 2017 2:14:38 PM WARNING jenkins.plugins.slack.StandardSlackService publish
Error posting to Slack
java.lang.IllegalStateException: Target host is null
at org.apache.http.util.Asserts.notNull(Asserts.java:46)
at org.apache.http.impl.client.InternalHttpClient.determineRoute(InternalHttpClient.java:125)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
at jenkins.plugins.slack.StandardSlackService.publish(StandardSlackService.java:126)
at jenkins.plugins.slack.SlackNotifier$DescriptorImpl.doTestConnection(SlackNotifier.java:510)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:335)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:175)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:108)
at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:236)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:236)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) …Run Code Online (Sandbox Code Playgroud) Slack编程的新功能,不可否认,自从我开发了很多东西以来已经有一段时间了.
我正在寻找有关如何自动转换任何渠道中任何人发布的任何机票的方向,并将其转换为我们的票务系统的深层链接.
所以,也许最初的消息是这样的:
"嘿伙计们,谁正在使用Ticket#212373?"
我希望'#212373'能够自动转换为我们票务系统的链接.如果它将与目标系统中的故障单中的其他详细信息/属性一起扩展,例如客户名称,问题描述,当前状态等,则奖励积分.
任何人都可以给我一些指导,也许是向我展示目标是哪种API,是否可行,推荐方法等?
当https://slack.com/api/files.upload用于将文件/片段上传到频道时,该片段会成功显示在所需的频道中,并包含正确的标题和文件名.但是,单击该Click to expand inline按钮时,显示的线路数量明显少于上传的数量.
但是,单击文件/片段上的外部链接按钮,将我带到Web浏览器中的文件,所有行都在那里,文件看起来正常:
成功发布后:
单击此展开按钮:
在浏览器中单击带有右上角按钮的箭头的方块时:
所有301行显示在这里.
我是否需要做些什么才能确保所有线路都出现在Slack客户端?即使刷新Slack也行不通!
编辑: Slack的支持说这是一个已知的bug.
我成功地将Dialogflow chatbot集成为Slack中的APP,并且可以使用APP选项卡进行聊天.
但是,它要回应频道中的消息,因为@bot hello
我意识到我必须将app_mention事件添加到订阅Bot事件表单中.
这应该根据文档工作,但在这种情况下它没有.所以我开始怀疑该事件是否与Dialogflow不兼容,或者文档中是否缺少某些内容.
请指教.谢谢!
我目前正在研究 Jenkins 与 Slack 之间的集成,我想从 slack 中完全控制 Jenkins,基本上,我想触发作业,并且我想回答输入(如果存在)。例如
pipeline{
agent any
stages{
stage('Test Notification success stage'){
steps{
script{
env.createofflinepkg = input message: 'User input required',
ok: 'Submit',
parameters: [choice(name: 'Create Offline Package', choices: "Create\nSkip", description: 'Create Offline Package or Skip')]
}
slackSend (channel: 'input-response',color: '#ffff00', message: "Yellow at general : Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望将其发送到 slack,然后我可以从 slack 中回答这个问题,有没有办法做到这一点?提前致谢。