我正在尝试使用slacker python api为Slack消息发布消息我无法附加到我的消息的链接,如下面的代码所示:
attachments = [title, link_to_events, "More details"]
print type(attachments) # this is a list
slack = Slacker(slack_api_token)
# Send a message to #general channel
slack.chat.post_message(slack_channel, message, attachments=attachments)
Run Code Online (Sandbox Code Playgroud)
在slacker代码中,看起来我们正在寻找一个"列表"类型的变量:
https://github.com/os/slacker/blob/master/slacker/ init .py 第241行:
# Ensure attachments are json encoded
if attachments:
if isinstance(attachments, list):
attachments = json.dumps(attachments)
return self.post('chat.postMessage',
data={
'channel': channel,
'text': text,
'username': username,
'as_user': as_user,
'parse': parse,
'link_names': link_names,
'attachments': attachments,
'unfurl_links': unfurl_links,
'unfurl_media': unfurl_media,
'icon_url': icon_url,
'icon_emoji': icon_emoji
})
Run Code Online (Sandbox Code Playgroud)
我的代码有问题吗?
fyi:这是我在slack api文档https://api.slack.com/custom-integrations中发现的 : …
我正在使用Protractor进行e2e测试,在afterLaunch函数中的量角器配置文件中我试图获取所有失败规范的列表,以便我可以在松弛的相应通道上发送松弛消息,有没有办法做到这一点?
我已经构建了一个简单的 slack 集成(斜杠命令)来从我的表中返回名称。结果应该是这样的
姓名1
姓名2
姓名 3
为此,我只是生成一个这样的文本字符串:
foreach($names as $name) {
$text .= $name . ' \n';
}
Run Code Online (Sandbox Code Playgroud)
集成本身运行良好,但结果如下所示
名称 1 \n名称 2\n
我有一个私有的 slack 应用程序(由“XT”团队的用户“X”开发)
我有一个网络服务器知道如何完成 Oauth 过程并为每个团队生成令牌
现在 - 作为 YT 团队的用户 Y,我正在我的 YT 团队中安装 slack 应用程序并获得令牌,
使用该令牌我执行 API 调用channels.create,
我加入了我的团队(又名 YT),确实我看到频道已创建,
但据记载,该频道是由安装了 slack 应用程序的特定用户创建的,即用户 Y。
我希望看到该频道是由应用程序创建的,而不是由特定用户创建的。有没有办法做到这一点?
考虑使用机器人令牌(从应用程序安装中获得)但channels.create机器人无法执行
我编写了几个斜杠命令,这些命令在公共频道中显示响应没有任何问题,但它们在私人频道或直接消息中不显示任何响应。
如下所示,我使用 in_channel 响应类型。是否有任何其他我可以使用的响应类型或解决方法,以便它在任何地方都有效?
$data = array(
"username" => "My_user",
"channel" => $channel_id,
"response_type" => "in_channel",
"text" => $text,
"mrkdwn" => true,
"icon_url" => $icon_url
);
$json_string = json_encode($data);
$slack_call = curl_init($slack_webhook_url);
curl_setopt($slack_call, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($slack_call, CURLOPT_POSTFIELDS, $json_string);
curl_setopt($slack_call, CURLOPT_CRLF, true);
curl_setopt($slack_call, CURLOPT_RETURNTRANSFER, true);
curl_setopt($slack_call, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json",
"Content-Length: " . strlen($json_string))
);
$result = curl_exec($slack_call);
curl_close($slack_call);
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我创建了一个松弛的对话框/表单来收集用户的一些信息。表单呈现得很好,我可以毫无问题地填写表单,但是单击“提交”后它不会关闭,而是出现错误:
我们在连接时遇到了一些麻烦。再试一次?
如文档中所述,我已经发回200状态OK 。
// menu is the end point of my interactive messages
app.post('/menu', (req, res) => {
console.log('from form submission:', req.body.payload)
res.sendStatus(200);
})
Run Code Online (Sandbox Code Playgroud)
有什么事吗 我可以看到我的应用的控制台日志。
我对使用 node js 进行 slack api 集成非常陌生。我正在尝试获取频道历史记录。即使我尝试过chat.postMessage。但它每次都给我带来以下错误:
{ Error: An API error occurred: channel_not_found
at platformErrorFromResult (..\node_modules\@slack\client\dist\WebClient.js:747:42)
at __await.makeRequest.then (..\node_modules\@slack\client\dist\WebClient.js:464:39)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
code: 'slackclient_platform_error',
data:
{ ok: false,
error: 'channel_not_found',
scopes:
[ 'identify',
'bot',
'commands',
'channels:history',
'chat:write:user',
'chat:write:bot' ],
acceptedScopes: [ 'channels:history' ]*** } }
Run Code Online (Sandbox Code Playgroud)
这是我的代码片段,
const { WebClient } = require('@slack/client');
const token = "OAuth Access Token"; // passing OAuth Access Token
const web = new WebClient(token);
web.channels.history({ channel: appID})
.then((res) => {
console.log('Message sent: ', …Run Code Online (Sandbox Code Playgroud) 当我通过 next_cursor 分页时,每次通过 NodeJS 函数点击 URL 时,我都会得到不同数量的通道。
一次获取的总通道数为 7488,另一次为 300。每次运行程序时都会有所不同。
URL : https://slack.com/api/conversations.list?types=public_channel&cursor={cursor}=&exclude_archived=true&token={token}
Run Code Online (Sandbox Code Playgroud)
该问题是由于松弛的速率限制造成的。conversation.list 属于第 2 级速率限制。每分钟最多只能处理 20 个请求。
function fetchData(){
getResponse(url);
function getResponse(url) {
let tempData = '';
https.get(url, (resp) => {
resp.on('data', (chunk) => {
tempData += chunk;
});
resp.on('end', () => {
try{
tempData = JSON.parse(tempData);
if(tempData.channels){
resultData.push(tempData.channels);
}
if (tempData.response_metadata && tempData.response_metadata.next_cursor) {
if(tempData.response_metadata.next_cursor === ''){
return resultData;
}
let cursorIndex = url.indexOf('cursor');
let newUrl = url.slice(0,cursorIndex);
let token = apiConstants.SLACK_API['ACCESS_TOKEN'];
let nextCursor = tempData.response_metadata.next_cursor.slice(0,tempData.response_metadata.next_cursor.length-1);
nextCursor …Run Code Online (Sandbox Code Playgroud) 我正在将一些代码从 hipchat 迁移到 Slack。我用一个 hipchat curl 命令向我想要转换为 slack 的用户发送 DM:
msg='hello world'
curl --fail -d "$(jq -c -n --arg msg "${msg}" '{"message_format": "text", "message": $msg}')" \
-H "Content-Type: application/json" \
-X POST "https://my.hipchat.server.com/v2/user/$USERS_EMAIL/message?auth_token=$HIPCHAT_TOKEN"
Run Code Online (Sandbox Code Playgroud)
假设我拥有的只是一个机器人令牌和我想要向其发送消息的用户帐户的电子邮件(没有 Webhook 设置)。我如何向该用户发送消息?我将使用的确切卷曲结构是什么?
使用 Botkit 创建 slack bot,但无法连接到 Mongo Atlas 进行存储。Node.js 后端。使用 Botkit-storage-mongo
代码:
var Botkit = require('botkit');
var BotkitStorage = require('botkit-storage-mongo');
storage = BotkitStorage({ mongoUri: `mongodb+srv://<username>:<password>@<clustername>/test?retryWrites=true&w=majority`})
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,我收到此错误:
UnhandledPromiseRejectionWarning: Error: MongoError: failed to connect to server [<cluster_name>] on first connect [Error: getaddrinfo ENOTFOUND <cluster_name>
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:60:26) {
name: 'MongoError',
message: 'getaddrinfo ENOTFOUND <cluster_name>'
}]
Run Code Online (Sandbox Code Playgroud)
依赖项:
"dependencies": {
"botkit": "0.6.21",
"botkit-storage-mongo": "1.0.7",
"mongodb": "^3.5.0"
}
Run Code Online (Sandbox Code Playgroud)
在 Mongo Atlas 中,我的 IP 地址被列入白名单。还测试允许所有 IP:0.0.0.0/0。
关于为什么我无法连接的任何想法?