- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
这是我的 golang 应用监听来自 slack 命令的请求:main.go
:
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"time"
)
type SlackCmdResponse struct {
Text string `json:"text"`
}
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
if err := req.ParseForm(); err != nil {
panic(err)
}
responseUrl := req.PostFormValue("response_url")
go func() {
time.Sleep(time.Second)
postBack(responseUrl)
}()
rj, err := json.Marshal(SlackCmdResponse{Text: "Test started"})
if err != nil {
panic(err)
}
w.Header().Set("Content-Type", "application/json")
w.Write(rj)
})
fmt.Println("listening 8383")
if err := http.ListenAndServe(":8383", nil); err != nil {
panic(err)
}
}
func postBack(responseUrl string) {
fmt.Println("responseUrl", responseUrl)
cResp := SlackCmdResponse{
Text: "Test finished",
}
cj, err := json.Marshal(cResp)
if err != nil {
panic(err)
}
req, err := http.NewRequest("POST", responseUrl, bytes.NewReader(cj))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
if resp != nil {
fmt.Println(resp.StatusCode)
if b, err := ioutil.ReadAll(resp.Body); err != nil {
panic(err)
} else {
fmt.Println(string(b))
}
if resp.Body != nil {
resp.Body.Close()
}
}
}
我运行它:
$ go run main.go
listening 8383
我使用 ngrok 使其可以从互联网访问:
ngrok http 8383
我使用 POST
选项创建了斜杠命令 /my-command
并粘贴了 ngrok 提供的 https URL:
现在,当我在 slack 中运行 /my-command
时,我得到 slack 回复 Test started
。然后在一秒钟内打印 Test finished
目前,一切都很好。
如果我换行
time.Sleep(time.Second)
按行
time.Sleep(time.Hour) // long test
我没有在一小时内打印出“测试完成”。相反,我在我的应用日志中看到:
responseUrl https://hooks.slack.com/commands/T3GBFUZ64/86817661808/XRmDO21jYaP1Wzu7GFpNw9eW
404
Expired url
看起来 slack 的响应 URL 有过期时间。如何延长这个到期时间?
或者在过期的情况下,是否有另一种方式向用户发送有关测试已完成的消息?我有用户启动 /my-command
req.PostFormValue("user_name")
req.PostFormValue("user_id")
所以我想通过 slack 运行超过 2 小时的集成测试,并在 slack 完成此类测试后得到响应。
最佳答案
You can not increase the expire time for the URL that is a Slack internal setting.
您可以通过 Slack Web API 向任何用户发送无人值守的消息你需要一个 token 。
更多信息请查看:https://api.slack.com/web .
Slack API 有一个 postMessage
命令,允许用户将消息发布到 channel 、slackbot
channel 以及通过 IM
channel (直接消息)。看来你想稍后做这很简单。
发布到 IM channel
方法网址:https://slack.com/api/chat.postMessage
根据
as_user
的值设置 channel
的值时,发布到 IM channel 会稍微复杂一些。
如果 as_user
为假:
- 将用户名 (
@chris
) 作为 channel
的值传递,以作为机器人发布到该用户的@slackbot channel 。
- 将 IM channel 的 ID (
D023BB3L2
) 作为 channel
的值传递,以作为机器人发布到该 IM channel 。可以通过 im.list 检索 IM channel 的 ID API 方法。
如果 as_user
为真:
- 将 IM channel 的 ID (
D023BB3L2
) 作为 channel
的值传递,以作为经过身份验证的用户发布到该 IM channel 。可以通过 im.list API 方法检索 IM channel 的 ID。要向拥有请求中使用的 token 的用户发送直接消息,请为 channel 字段提供对话/IM ID 值,该值在类似 im.list 的方法中找到。 .
要向
channel
字段中提供对话/IM在类似
im.list 的方法中找到的 ID 值.
im.列表
如果您没有与用户打开的 channel 但您可以调用
im.open
,此方法将返回直接消息 channel 列表。
im.打开
此方法用于
打开
与指定用户的直接消息 channel
。
可以找到关于
im.open
的文档here .
示例网址
https://slack.com/api/chat.postMessage?token=**TOKEN**&channel=**Direct Channel ID**&text=HelloWorld&as_user=true&pretty=1
只需将
**TOKEN**
和 **Direct Channel ID**
替换为您的值,它就会向指定用户发送一条直接消息。
关于go - 松弛集成 : 404 Expired url https://hooks. slack.com/commands,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39788408/
Windows 集成 (NTLM) 身份验证和 Windows 集成 (Kerberos) 之间有什么区别? 如何在IIS6中实现这些 w.r.t. MSDN 最佳答案 Kerberos 和 NTLM
Keycloak是一个用 Java 编写的开源身份验证和身份管理解决方案。它提供了一个nodejs适配器,使用它我能够成功地与express集成。这是有效的路由文件: 'use strict'
这是我关于 Bamboo 的第二个问题 ( My First One )。阅读建议信息后我的理解是,我需要一个构建工具,例如 nAnt 或 MSbuild 来编写一个获取源代码并构建它的脚本(我正在开
可用于将第三方应用程序与 jira 4.3 集成的身份验证方案有哪些?显然,从客户那里获取用户名和密码听起来很荒谬。另外,我知道 oauth 身份验证仅适用于版本 5。请告诉我。谢谢。 附注。我不是在
我有一个使用 DDS 的旧版 C++ 应用程序用于异步通信/消息传递。我需要将此应用程序集成到使用 JMS 进行消息传递的 JavaEE 环境中。除了构建独立的 JMS/DDS 桥接模块之外,我还有其
我正在尝试使用 Whatsapp 发送测试消息,但收到此错误消息: "error":{"code":27,"description":"Recipient not available on chann
我想将 photologue 与我的 Django 应用程序集成,并使用它在车辆库存中显示照片......有点像 Boost Motor Group Inc. 提供的内容。我已经集成了该应用程序,所以
我目前正在尝试弄清楚如何与 fujitsu scansnap 扫描仪集成,但没有从 fujitsu 找到有关 fujitsu scansnap 管理器如何调用您的应用程序并将文件发送到您的应用程序的详
在我的项目中,我使用了 9 个(九个)int-ip:udp-inbound-channel-adapter 和一个 jms:inbound-channel-adapter。 Jms 适配器从服务器接收
在我们当前的原型(prototype)中,大多数标准 HTML 控件都被小程序取代,最重要的是表单提交由小程序触发。 有没有一种方法可以像 一样在服务器端调用关联的操作 ? 本文Applet and
是否可以使用 twilio 号码从 whatsapp 发送/接收短信?有人用whatsapp试过twilio吗?我问过客服,如果可能的话,他说,不确定,但很多人都问过这个问题。 最佳答案 万一其他人来
我们办公室中几乎不存在版本控制,这显然导致了很多麻烦。我们想使用SVN和Notepad++进行设置...任何人都对如何实现此目标有任何想法?我已经开始研究并浏览了这个网站: http://www.sw
曾经有提供这种集成的 spring-modules 项目;但是,该项目现已弃用。现在有没有人继续支持这种集成?谢谢。 最佳答案 工作正在进行中。 http://blog.athico.com/sear
我的理解是,根据 http://wiki.dbpedia.org/Datasets,DBpedia 从 YAGO 获取类层次结构,而不是实体。 .但是,类似 http://dbpedia.org/cl
任何人都可以帮助我如何将 OpenCMS 与 Java Spring Web 应用程序集成。已经用谷歌搜索并浏览了很多网站但没有用。所以,请帮助我。 最佳答案 我认为将 SpringMVC 与 Ope
我正在尝试使用新的 migs getaway (MPGS) 我遵循了下一个 url 中的代码 https://ap-gateway.mastercard.com/api/documentation/i
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我有一个 cmake 项目。我想轻松完成以下操作 搜索光标下任何变量、函数等的声明、定义和引用,这些可能在外部头文件中声明,其路径是在CMakeLists.txt中使用INCLUDE_DIRECTOR
有人能给我指点一下 Objective-C(或 c/c++)库的方向,或者教通过 FTP 上传或下载的教程(Objective-C)吗?最好能展示如何将文件下载到临时目录,然后稍后上传?我不介意针对
集成()给出了非常错误的答案: integrate(function (x) dnorm(x, -5, 0.07), -Inf, Inf, subdivisions = 10000L) # 2.127
我是一名优秀的程序员,十分优秀!