- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
11-16-2024 02:52 AM - 編集済み 11-16-2024 03:03 AM
提供しているスクリプトとの詳しい差分は下記リンクのオプション3を見るとわかると思いますが、CartAPIなしの場合において、カタログに定義されたフローを実行するには、オプション 3 のような記載が必要なようです。
コードを使用して ServiceNow カタログ要求を送信する方法
個人的にここまでスクリプトを書くかつ非推奨なスクリプトなら、そもそもメールでカタログをリクエストする運用自体を考え直したいなと思うので、こちらは実際にInbound mail actionで実行できるかまでは確認してません。
また同リンクのオプション1のCartJS APIでInbound mail actionを実装してみましたが、こちらも上手くいきませんでした。
一応スクリプトを載せます。
バックグラウンドスクリプトで実行するとカタログに設定されたFlowの実行まで動作しますが、Inbound mail actionでは上手く実行できませんでした。現在ではアイテムのリクエストをスクリプトで操作するにはCartJS APIが推奨されますが、Inbound mail actionでは相性が悪いのか...?引き続き試してみて下さい。
var itemName = "Standard Laptop";
// カタログアイテムを検索し、sys_idを取得
var scCatItem = new GlideRecord("sc_cat_item");
scCatItem.addQuery('name', itemName);
scCatItem.query();
if (scCatItem.next()) {
var itemSysId = '';
itemSysId = scCatItem.getValue('sys_id'); // sys_idを取得
gs.info('Inbound mail action:Request Catalog/ Reuest Catalog SYS ID is : ' + itemSysId);
// カートのインスタンスを作成
var cart = new sn_sc.CartJS();
// カタログアイテムをJSONオブジェクトとして定義
var requestItem = {
'sysparm_id': itemSysId, //カタログのsys_id
'sysparm_quantity': '1', //数量
'variables': {
'acrobat': 'true',
'photoshop': 'false',
}
};
//JSON文字列に変換
requestItem = JSON.stringify(requestItem);
//jsオブジェクトに変換
requestItem = JSON.parse(requestItem);
// カートにアイテムを追加
var cartDetails = cart.addToCart(requestItem); // ここではitemがオブジェクトである必要があります
// カートをチェックアウトするためにリクエストをJSONオブジェクトとして定義
var requestInfo = {
'special_instructions': '',
'requested_for': "6816f79cc0a8016401c5a33be04be441", // admin user
'delivery_address': "",
};
//JSON文字列に変換
requestInfo = JSON.stringify(requestInfo);
//jsオブジェクトに変換
requestInfo = JSON.parse(requestInfo);
// オーダーを送信
var requestDetails = cart.submitOrder(requestInfo); // requestもオブジェクト形式で渡す
gs.info('Inbound mail action:Request Catalog/ Reuest Order Info: ' + JSON.stringify(requestDetails)); // 結果をログに出力
} else {
gs.error('Inbound mail action:Request Catalog/ No catalog item found with the name: ' + itemName);
// アイテムが見つからなかった場合は、処理を中断する
}
また、ちゃんと試せずに恐縮ですが、CartAPIであれば、以下のリンクで上手くいっている報告がありました。
解決済み: インバウンド アクションからカタログ アイテムを送信する - ページ 3 - ServiceNow Community
さらに、以下のYouTubeでInbound mail actionをFlowで実装する方法もあります。
この場合、カタログ変数の値をメール本文から取得が難しいのですが、ただリクエストするだけならこちらの方が実装は楽です。
Submit a catalog item through inbound email | Flow Designer | ServiceNow
FlowのInbound mail actionでカタログ変数をメール本文で取得する議論は、以下のcommunityスレッドで議論されています。こちらも含めて、Flowでもnbound mail actionでカタログをリクエストできそうです。
解決済み: 受信メールフローを使用したメール本文の解析 - ServiceNow Community
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
11-17-2024 07:15 PM
こんにちは
@senon さん
教えていただいた方法をいくつか試してみましたところ、CartAPIの以下の方法で実現することができました。
解決済み: インバウンド アクションからカタログ アイテムを送信する - ページ 3 - ServiceNow Community
cart.addItemのところを対象カタログアイテムにするだけでとりあえず最低限の実行ができました。
色々と情報ありがとうございました。
情報までにコードを掲載させていただきます。
Inbound Action: Create Requested Item
Table: sc_request
Script:
FlowのInbound mail actionについても参考になりました。ありがとうございました。
今回はInbound Action & CartAPIで実現したいと思いますが、今後の参考とさせていただきます。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
11-16-2024 02:52 AM - 編集済み 11-16-2024 03:03 AM
提供しているスクリプトとの詳しい差分は下記リンクのオプション3を見るとわかると思いますが、CartAPIなしの場合において、カタログに定義されたフローを実行するには、オプション 3 のような記載が必要なようです。
コードを使用して ServiceNow カタログ要求を送信する方法
個人的にここまでスクリプトを書くかつ非推奨なスクリプトなら、そもそもメールでカタログをリクエストする運用自体を考え直したいなと思うので、こちらは実際にInbound mail actionで実行できるかまでは確認してません。
また同リンクのオプション1のCartJS APIでInbound mail actionを実装してみましたが、こちらも上手くいきませんでした。
一応スクリプトを載せます。
バックグラウンドスクリプトで実行するとカタログに設定されたFlowの実行まで動作しますが、Inbound mail actionでは上手く実行できませんでした。現在ではアイテムのリクエストをスクリプトで操作するにはCartJS APIが推奨されますが、Inbound mail actionでは相性が悪いのか...?引き続き試してみて下さい。
var itemName = "Standard Laptop";
// カタログアイテムを検索し、sys_idを取得
var scCatItem = new GlideRecord("sc_cat_item");
scCatItem.addQuery('name', itemName);
scCatItem.query();
if (scCatItem.next()) {
var itemSysId = '';
itemSysId = scCatItem.getValue('sys_id'); // sys_idを取得
gs.info('Inbound mail action:Request Catalog/ Reuest Catalog SYS ID is : ' + itemSysId);
// カートのインスタンスを作成
var cart = new sn_sc.CartJS();
// カタログアイテムをJSONオブジェクトとして定義
var requestItem = {
'sysparm_id': itemSysId, //カタログのsys_id
'sysparm_quantity': '1', //数量
'variables': {
'acrobat': 'true',
'photoshop': 'false',
}
};
//JSON文字列に変換
requestItem = JSON.stringify(requestItem);
//jsオブジェクトに変換
requestItem = JSON.parse(requestItem);
// カートにアイテムを追加
var cartDetails = cart.addToCart(requestItem); // ここではitemがオブジェクトである必要があります
// カートをチェックアウトするためにリクエストをJSONオブジェクトとして定義
var requestInfo = {
'special_instructions': '',
'requested_for': "6816f79cc0a8016401c5a33be04be441", // admin user
'delivery_address': "",
};
//JSON文字列に変換
requestInfo = JSON.stringify(requestInfo);
//jsオブジェクトに変換
requestInfo = JSON.parse(requestInfo);
// オーダーを送信
var requestDetails = cart.submitOrder(requestInfo); // requestもオブジェクト形式で渡す
gs.info('Inbound mail action:Request Catalog/ Reuest Order Info: ' + JSON.stringify(requestDetails)); // 結果をログに出力
} else {
gs.error('Inbound mail action:Request Catalog/ No catalog item found with the name: ' + itemName);
// アイテムが見つからなかった場合は、処理を中断する
}
また、ちゃんと試せずに恐縮ですが、CartAPIであれば、以下のリンクで上手くいっている報告がありました。
解決済み: インバウンド アクションからカタログ アイテムを送信する - ページ 3 - ServiceNow Community
さらに、以下のYouTubeでInbound mail actionをFlowで実装する方法もあります。
この場合、カタログ変数の値をメール本文から取得が難しいのですが、ただリクエストするだけならこちらの方が実装は楽です。
Submit a catalog item through inbound email | Flow Designer | ServiceNow
FlowのInbound mail actionでカタログ変数をメール本文で取得する議論は、以下のcommunityスレッドで議論されています。こちらも含めて、Flowでもnbound mail actionでカタログをリクエストできそうです。
解決済み: 受信メールフローを使用したメール本文の解析 - ServiceNow Community
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
11-17-2024 07:15 PM
こんにちは
@senon さん
教えていただいた方法をいくつか試してみましたところ、CartAPIの以下の方法で実現することができました。
解決済み: インバウンド アクションからカタログ アイテムを送信する - ページ 3 - ServiceNow Community
cart.addItemのところを対象カタログアイテムにするだけでとりあえず最低限の実行ができました。
色々と情報ありがとうございました。
情報までにコードを掲載させていただきます。
Inbound Action: Create Requested Item
Table: sc_request
Script:
FlowのInbound mail actionについても参考になりました。ありがとうございました。
今回はInbound Action & CartAPIで実現したいと思いますが、今後の参考とさせていただきます。