Javascript 如何获取个人资料Pic&;在松弛状态下发送到通道
我正在学习Slack,目前我正在尝试获取用户的个人资料图片,并将其发布在Slack general频道中 我尝试了Javascript 如何获取个人资料Pic&;在松弛状态下发送到通道,javascript,slack,slack-api,slack-commands,Javascript,Slack,Slack Api,Slack Commands,我正在学习Slack,目前我正在尝试获取用户的个人资料图片,并将其发布在Slack general频道中 我尝试了users.profile.getapi,我能够得到一些JSON响应,但在将图像发布到频道时不清楚 收到的答复: { "ok": true, "profile": { "title": "", "phone": "", "skype": "", "real_name": "azeez.gaa",
users.profile.get
api,我能够得到一些JSON响应,但在将图像发布到频道时不清楚
收到的答复:
{
"ok": true,
"profile": {
"title": "",
"phone": "",
"skype": "",
"real_name": "azeez.gaa",
"real_name_normalized": "azeez.gaa",
"display_name": "",
"display_name_normalized": "",
"fields": null,
"status_text": "",
"status_emoji": "",
"status_expiration": 0,
"avatar_hash": "gd6ada77a40d",
"email": "XXXXXXXXXXX",
"image_24": "https:\/\/secure.gravatar.com\/avatar\/d6ada88a40de8504c6b6068db88266ad.jpg?s=24&d=https%3A%2F%2Fslack.com%2Fdev-cdn%2Fv%2Fimg%2Favatars%2Fsmiley_blobs%2Fava_0016-24.png",
"image_32": "https:\/\/secure.gravatar.com\/avatar\/d6ada88a40de8504c6b6068db88266ad.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F27b6e%2Fimg%2Favatars%2Fsmiley_blobs%2Fava_0016-32.png",
"image_48": "https:\/\/secure.gravatar.com\/avatar\/d6ada88a40de8504c6b6068db88266ad.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F27b6e%2Fimg%2Favatars%2Fsmiley_blobs%2Fava_0016-48.png",
"image_72": "https:\/\/secure.gravatar.com\/avatar\/d6ada88a40de8504c6b6068db88266ad.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F27b6e%2Fimg%2Favatars%2Fsmiley_blobs%2Fava_0016-72.png",
"image_192": "https:\/\/secure.gravatar.com\/avatar\/d6ada88a40de8504c6b6068db88266ad.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F27b6e%2Fimg%2Favatars%2Fsmiley_blobs%2Fava_0016-192.png",
"image_512": "https:\/\/secure.gravatar.com\/avatar\/d6ada88a40de8504c6b6068db88266ad.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F27b6e%2Fimg%2Favatars%2Fsmiley_blobs%2Fava_0016-512.png",
"status_text_canonical": ""
}
}
我看到了文件。上传api,但不确定如何传递内容参数
以下是用于向Slack发送消息的代码:
for (i = 0; i < arrayList.length; i++)
{
var rm = new sn_ws.RESTMessageV2();
rm.setHttpMethod('POST');
rm.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
rm.setEndpoint('https://slack.com/api/chat.postMessage');
var bodyString = '';
bodyString += 'token=' + encodeURIComponent('TOKEN');
bodyString += '&channel=' + encodeURIComponent('CKZLVKNFM');
bodyString += '&text=' + encodeURIComponent('HBD ' + arrayList[i]);
rm.setRequestBody(bodyString);
var response1 = rm.execute();
var responsebody = response1.getBody();
var statuscode = response1.getStatusCode();
response1.getAllHeaders();}
粘贴收到的响应:
Response Parsing:
{"ok":true,
"user":{
"id":"UL4NBK3BK","team_id":"TLB345U5N","name":"azeez.gaa","deleted":false,"color":"9f69e7","real_name":"azeez.gaa","tz":"Asia/Kolkata","tz_label":"India Standard Time","tz_offset":19800,
"profile":{"title":"","phone":"","skype":"","real_name":"azeez.gaa","real_name_normalized":"azeez.gaa","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gd6ada88a40d","email":"azeez.gaa@gmail.com",
"image_24":"https://secure.gravatar.com/avatar/d6ada88a40de8504c6b6068db88266ad.jpg?s=24&d=https%3A%2F%2Fslack.com%2Fdev-cdn%2Fv%2Fimg%2Favatars%2Fsmiley_blobs%2Fava_0016-24.png",
"image_32":"https://secure.gravatar.com/avatar/d6ada88a40de8504c6b6068db88266ad.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F27b6e%2Fimg%2Favatars%2Fsmiley_blobs%2Fava_0016-32.png",
"image_48":"https://secure.gravatar.com/avatar/d6ada88a40de8504c6b6068db88266ad.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F27b6e%2Fimg%2Favatars%2Fsmiley_blobs%2Fava_0016-48.png",
"image_72":"https://secure.gravatar.com/avatar/d6ada88a40de8504c6b6068db88266ad.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F27b6e%2Fimg%2Favatars%2Fsmiley_blobs%2Fava_0016-72.png",
"image_192":"https://secure.gravatar.com/avatar/d6ada88a40de8504c6b6068db88266ad.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F27b6e%2Fimg%2Favatars%2Fsmiley_blobs%2Fava_0016-192.png",
"image_512":"https://secure.gravatar.com/avatar/d6ada88a40de8504c6b6068db88266ad.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F27b6e%2Fimg%2Favatars%2Fsmiley_blobs%2Fava_0016-512.png","status_text_canonical":"","team":"TLB345U5N"},
"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1562821220}}
我现在收到回复,但请检查编码的URI。我可以发送消息,但不能发布图像。我可以手动将url和图像显示出来
var rm1 = new sn_ws.RESTMessageV2();
//rm.setLogLevel('all');
rm1.setHttpMethod('POST');
rm1.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
rm1.setEndpoint('https://slack.com/api/chat.postMessage');
//encodeURIComponent
var bodyString1 = '';
bodyString1 += 'token=' + encodeURIComponent('xoxb-691106198192-692978264951-MxWbFRMgjb8xo6B9I3yHEu3i');
bodyString1 += '&channel=' + encodeURIComponent('CKZLVKNFM');
bodyString1 += '&image_url=' +encodeURIComponent(grimage.user.profile.image_512);
bodyString1 += '&text=' + encodeURIComponent('Congrats hhhh' );
rm1.setRequestBody(bodyString1);
var response11 = rm1.execute();
var responsebody1 = response11.getBody();
var statuscode1 = response11.getStatusCode();
response11.getAllHeaders();
日志
文件。上载
需要先将图像下载到本地服务器,然后再将其上载到Slack
这是一个非常强大的API方法,但在您的情况下,它可能是不必要的,因为概要文件映像已经托管在Slack cloud上
相反,我建议只在普通邮件的附件中包含图像URL。因为这些URL是公共的,所以它们可以正常工作
JSON格式的示例消息,用于使用chat.postMessage
等发送:
{
“通道”:“测试”,
“附件”:
[
{
“文本”:“个人资料图片”,
“图像url”:https://secure.gravatar.com/avatar/d6ada88a40de8504c6b6068db88266ad.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F27b6e%2Fimg%2Favatars%2Fsmiley\U blobs%2Fava\U 0016-512.png“
}
]
}
以防您对示例中URL中的额外反斜杠感到疑惑。字符串是JSON编码的,需要首先进行解码(我对URL进行了解码)
以下是有关如何将带有用户配置文件映像的消息发送到频道的概述:
使用Slack用户ID获取您要向其发送消息的用户列表(如果您没有Slack用户ID,请呼叫用户。列出并根据电子邮件地址进行匹配)
为每个用户调用users.get.profile
以获取其图像URL
向每个用户发送消息。将图像URL添加为附件(请参见我的示例)
确保遵守API调用的速率限制,例如每秒最多发送一条消息
我可能还会在消息中为每个用户添加一个提示,您可以通过在文本中添加
(使用正确的用户ID)。如果您仍然想使用文件。上载请查看有关它如何工作的许多问题和示例。如果您需要更多帮助,请确保将您当前的代码添加到问题中。嗨,Erik,议程是根据空闲用户的生日向他们发送生日消息。我们需要发送消息和照片。目前我们有Servicenow到Slack的集成,现在我们正在从Servicenow中提取DOB,并使用chat.postMessage api在Slack中发布消息。现在的挑战是发送用户的图片。您能帮助我如何继续吗???下面是我如何使用javascript发布消息://下面是我如何使用javascript发布消息:for(i=0;iimage\uuuu
开头的URL。它们都是相同的图像,只是分辨率不同。因此image_512
是512x512像素。我建议您首先将从API获得的JSON转换为一个对象。然后您可以更好地使用URL。您在评论中发布的代码的URL是JSON格式的,这不起作用。您需要先将其解析为JS对象。使用JSON.parse()刚刚更新了完整的代码和响应
var rm1 = new sn_ws.RESTMessageV2();
//rm.setLogLevel('all');
rm1.setHttpMethod('POST');
rm1.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
rm1.setEndpoint('https://slack.com/api/chat.postMessage');
//encodeURIComponent
var bodyString1 = '';
bodyString1 += 'token=' + encodeURIComponent('xoxb-691106198192-692978264951-MxWbFRMgjb8xo6B9I3yHEu3i');
bodyString1 += '&channel=' + encodeURIComponent('CKZLVKNFM');
bodyString1 += '&image_url=' +encodeURIComponent(grimage.user.profile.image_512);
bodyString1 += '&text=' + encodeURIComponent('Congrats hhhh' );
rm1.setRequestBody(bodyString1);
var response11 = rm1.execute();
var responsebody1 = response11.getBody();
var statuscode1 = response11.getStatusCode();
response11.getAllHeaders();
token=xoxb-692206198192-692978264951-MxWbFRMgjb8xo6B9I3yHEu3i&channel=CKZLVKNFM&image_url=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fd6ada88a40de8504c6b6068db88266ad.jpg%3Fs%3D512%26d%3Dhttps%253A%252F%252Fa.slack-edge.com%252F27b6e%252Fimg%252Favatars%252Fsmiley_blobs%252Fava_0016-512.png&text=Congrats%20hhhh