ServiceNow与slack集成

时间:2017-04-04 13:30:01

标签: slack-api slack servicenow

我需要将servicenow与slack集成,这有助于向一个松弛的通道发送高和重要的P1警报。

我正在寻找可以使serviceNow与slack集成的可能性。

请建议。

7 个答案:

答案 0 :(得分:3)

您应该在插入/更新时在ServiceNow中创建业务规则。

条件: 优先级= 1或优先级更改为1

高级/脚本:

    var request = new sn_ws.RESTMessageV2('SLACK_EndpointURL', 'POST');
request.setRequestHeader("Accept","application/json");
request.setRequestHeader('Content-Type','application/json');
//OR METHOD # request.setEndpoint('SLACK_EndpointURL');

// Your message
var reqBody = '{\"text\":\"This is a line of text.\nAnd this is another one.\"}';       
request.setRequestBody(reqBody);

var response = request.execute();
var responseBody = response.getBody();

//See response in System Logs # gs.log(responseBody);

答案 1 :(得分:1)

有多种方法可以集成ServiceNow和Slack。但是,对于您的案例,一个简单而直接的方法是在Slack中创建一个提供URL的Incoming WebHook,您需要从ServiceNow实例中执行的操作就是将JSON发布到该URL。

您可以在此处找到有关创建和自定义Slack webhooks的更多详细信息:https://api.slack.com/incoming-webhooks

答案 2 :(得分:1)

您可以使用BR触发所需的条件。此函数将我们的消息发布到Slack。端点是Slack中创建的入站webhook地址:

function postMessage(inPayload, inEndpoint, inTimeout) {
    var sResponseBody = '', nResponseCode = 0, sResponseMessage = '', sResponseEndpoint = '', sResponseHeaders = [];

    var rest = new sn_ws.RESTMessageV2();
    rest.setEndpoint(inEndpoint);
    rest.setHttpTimeout(inTimeout);
    rest.waitForResponse(inTimeout);
    rest.setRequestHeader('Content-Type', 'application/json');
    rest.setRequestHeader('Accept', 'application/json');
    rest.setHttpMethod('post');
    rest.setRequestBody(inPayload);
    for ( var i = 0; i < 3; i++ ) {
    try {
        var response      = rest.execute();
        sResponseBody     = response.getBody();
        nResponseCode     = response.getStatusCode();
        sResponseEndpoint = response.getEndpoint();
        sResponseHeaders  = response.getRequestHeaders();
        break;
    } catch( err ) {
        sResponseMessage = err.getMessage();
        gs.sleep(5000);
    }
    }
    return {"ResponseCode":nResponseCode,"ResponseBody":sResponseBody,"ResponseMessage":sResponseBody,"ResponseEndpoint":sResponseEndpoint, "ResponseHeaders":sResponseHeaders};
}

这将告诉您如何创建入站webhook: https://api.slack.com/incoming-webhooks

这是我们使用的示例有效负载。 $ {tags}是我们用来从源票证中获取价值的简单宏。你可以简单地在BR中进行dotwalk。

{
    "username":"${SlackUsername}",
    "attachments":[{
            "title":"Short description",
            "title_link":"${URL}",
            "text":"${ShortDescription}",
            "fallback":"${ShortDescription}",
            "color":"${Color}",
            "footer":"${SlackUsername}",
            "fields":[
                {"title":"State","value":"${State}","short":true},
                {"title":"Priority","value":"${Priority}","short":true},
                {"title":"Assignment group","value":"${AssignmentGroup}","short":true},
                {"title":"Assigned to","value":"${AssignedTo}","short":true},
                {"title":"Technical Service","value":"${TechnicalService}","short":true},
                {"title":"Configuration item","value":"${ConfigurationItem}","short":true},
                {"title":"Details","value":"${Description}","short":false}
            ],
            "ts":"${TimeStampEpoch}"
        }
    ]
}

有关信息: 我们使用一个自定义表,其条件设置为触发Slack的帖子。用户可以根据需要简单地创建自己的过滤器。使用的端点是用户提供的入站webhook。 异步业务规则在任务上运行,以根据需要查看条件和操作。

目前的工作是使用Slack应用程序,以便我们可以按频道ID发布到任何频道。这意味着我们不会冒任何人创建入站webhook然后离开公司的风险。

答案 3 :(得分:0)

您只需使用`编写基于REST的集成。还有什么需要知道的,或者你想到的具体内容吗?

答案 4 :(得分:0)

ServiceNow和Slack在SN版金士顿中提供OOTB集成。在serviceNow端,您可以使用松弛辐条在新流程设计器中创建集成。 https://docs.servicenow.com/bundle/kingston-servicenow-platform/page/administer/integrationhub/reference/slack-spoke.html

答案 5 :(得分:0)

您可以在2分钟内将ServiceNow设置为Slack集成,而无需编写任何代码。

只需转到下面的URL,进行注册,连接ServiceNow和Slack帐户并设置集成。

Connect ServiceNow to Slack now

希望这会有所帮助。 :)

答案 6 :(得分:0)

使用传入的Webhooks和传出的Webhooks和Slack辐条集成Slack非常简单,这是ServiceNow集成中心的一部分。

您可以简单地创建一个流,该流将根据集成集线器中的某些条件触发,并使用松散分支将消息从ServiceNow触发到所需的松散通道。

这个懒散的发言人会使用您的松弛传入Webhook URL的详细信息以及其他详细信息。

如果您需要进一步的帮助,请告诉我。

致谢