MKIが解説するServiceNow開発blog

ServiceNow にまつわるMKIナレッジを紹介いたします。

ServiceNowにWebhookでデータ連携

はじめに

みなさんこんにちは、三井情報株式会社です。
ServiceNowにWebhookでデータ連携する際の機能について紹介したいと思います。
Webhookに関しては、以前「HMAC-SHA256を利用したwebhookメッセージの検証方法」というタイトルで投稿しているため、気になる方はご確認ください。

Script REST APIs

今回紹介させていただく機能はServiceNowにてAPIを作成するための機能です。

ServiceNow Docs 「Scripted REST APIs」:
https://docs.servicenow.com/bundle/rome-application-development/page/integrate/custom-web-services/concept/c_CustomWebServices.html

Scripted REST APIsを使い、他のシステムからデータ受信し、ServiceNowのテーブルにレコードを作成する検証を実施しました。本題に入る前に、ご存知の方が多いと思いますが、簡単にAPIやRESTAPIについて記載します。

APIとは?

Application Programming Interfaceの略
・ソフトウェアやプログラム、Webサービスの間をつなぐインターフェースのこと

REST APIとは?

・RESTの設計原則に基づいて設計されたAPIのこと

RESTの設計原則とは?

URI(HTTPのパス)が名詞形であること
・リソースの操作(作成/閲覧/変更/削除)をHTTPのメソッドにより指定できること
・レスポンス形式がJSONもしくはXMLであること



次に、具体的なServiceNowでの設定項目と検証結果について記載します。

Script REST APIs 設定項目

System Web Service > Scripted Web Services > Scripted REST APIs > New
f:id:mki-blog:20211224094727p:plain

Name:APIの名前
API ID:サービスのIDを設定
入力後Submitすると下記のような画面に遷移します。先ほど指定したIDからBase API pathが自動で作成されます。
f:id:mki-blog:20211224094749p:plain

画面下部のタブResourcesのNewを押下すると下記の画面になります。
この画面で、作成したいAPIメソッドやスクリプトを作成します。
f:id:mki-blog:20211224094805p:plain

検証では、HTTP methodをPOSTにしました。スクリプトは、POSTされたデータを指定したテーブルのレコードとして新規挿入するようにしてみました。

スクリプトイメージ

var req_data = request.body.dataString;
	
	var now_GR = new GlideRecord("レコードを挿入したいTable名");
	now_GR.initialize();
	
	for (var i = 0; i < data.length; i++){
		
		var data_2 = data[i].split(",");
		
		if( data[i].indexOf("Hatena") > -1 ){
			now_GR.u_test_column1 = data_2[1];
		}else{
			now_GR.u_test_column2 = data_2[1];
		}
		
	}
	
	now_GR.insert();

Script REST APIs 検証結果

想定通り、POSTで受けとったデータの情報を基に、レコードを作成することができました!!

おわりに

いかがでしたでしょうか。標準で用意されているREST APIではできない処理を外部システムから起動する際に、是非利用してみてください。今回の検証では、認証を検証しませんでしたが、API実行時にACLでユーザー認証を実施できるようなので、今後は認証の検証にも挑戦したいです。
最後まで読んでいただき、ありがとうございました。

三井情報株式会社
ソリューション技術本部
クラウドソリューション部
第四技術室
鈴木 聡太
www.mki.co.jp