Javascript 如何获取个人资料Pic&;在松弛状态下发送到通道

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",

我正在学习Slack,目前我正在尝试获取用户的个人资料图片,并将其发布在Slack general频道中

我尝试了
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