- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-12-2023 07:11 PM
こんにちは皆様
私は受信アクションでレコードの起票を行っております。
そこで過去のレコードの中から特定のレコードの値を取得したいと考えております。
過去に起票されたレコードに紐づいたメールが受信された際に、作業メモにメールの本文を自動投稿する
機能を実装したいと考えております。
しかし、現状過去のレコードの値を取得することが出来ず新しくレコードが起票されてしまう状況になっております。
この機能は実装することは出来ますでしょうか?
写真は私が書いたコードです。
赤枠の箇所が上手く機能しておりません。
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-12-2023 07:52 PM
こんにちは @sirou
私もよく把握できてないので、一部内容が推測になり、情報共有と意味合いで回答しています。
Inbound Action の例(Create Incident と Update Incident )を勉強しまして、Snowが既存のレコード(更新)として識別されるためには、以下の二つの条件があります。この場合、新規/更新の判断ロジックはScriptの中に実装不要で、単純にcurrent.work_notes に値を設定すればと思います。
This inbound email action is triggered when an email is sent to ServiceNow and:
1. The email is a reply.
2. The email being replied to was sent by ServiceNow due to an update or creation of an Incident.
今回の場合は、おそらく、「更新」に自動判定されないと推測しています。
この場合は、「新規」のスクリプトの中に、
1.currentを使わすに、新しいGlideRecordを発行し過去のレコードを検索してから更新行います。
2.currentは新規起票用なので、これをキャンセルさせる(setAbortAction)。
※要テスト。。。。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-12-2023 07:52 PM
こんにちは @sirou
私もよく把握できてないので、一部内容が推測になり、情報共有と意味合いで回答しています。
Inbound Action の例(Create Incident と Update Incident )を勉強しまして、Snowが既存のレコード(更新)として識別されるためには、以下の二つの条件があります。この場合、新規/更新の判断ロジックはScriptの中に実装不要で、単純にcurrent.work_notes に値を設定すればと思います。
This inbound email action is triggered when an email is sent to ServiceNow and:
1. The email is a reply.
2. The email being replied to was sent by ServiceNow due to an update or creation of an Incident.
今回の場合は、おそらく、「更新」に自動判定されないと推測しています。
この場合は、「新規」のスクリプトの中に、
1.currentを使わすに、新しいGlideRecordを発行し過去のレコードを検索してから更新行います。
2.currentは新規起票用なので、これをキャンセルさせる(setAbortAction)。
※要テスト。。。。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-12-2023 09:06 PM
こんにちは @newhand
返信ありがとうございます。
また、情報共有不足申し訳ございません。
いただいたアドバイスを元に今後のスクリプトは、
1.写真赤枠箇所はwork_notes = subject + body;だけで問題ない
2.新規レコード作成を止めるために、新しく受信アクションを作成する
という認識で間違いないでしょうか?
また、新しいGlideRecordを発行し過去のレコードを検索ですが、
var gr = new GlideRecord("sn_customerservice_case");
gr.addQuery("u_outer_numberLIKE"+result.toString());
gr.query();
このようなコードでしょうか?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-12-2023 09:25 PM
受信したメールが以下の2条件を満たされる場合は 写真赤枠箇所はwork_notes = subject + body;だけで問題ないと思います。
1. The email is a reply.
2. The email being replied to was sent by ServiceNow due to an update or creation of an Record.
>2.新規レコード作成を止めるために、新しく受信アクションを作成する
>という認識で間違いないでしょうか?
⇒受信アクションで「更新」と判定されない場合(「新規」と判定される場合)、
current は新規作成用のオブジェクトになる、この場合、ディフォルトでは新しいレコードが作成されます。この動作を制御しないと、過去のレコードが更新されたうえ、新しいレコードも作成されてします。なので、新しいレコードを作成しないように制御する必要があります。
>また、新しいGlideRecordを発行し過去のレコードを検索ですが、
>var gr = new GlideRecord("sn_customerservice_case");
>gr.addQuery("u_outer_numberLIKE"+result.toString());
>gr.query();
>このようなコードでしょうか?
⇒はい、過去のレコードをクエリーして「work_notes」を更新する。
受信されるメールがどんなメールなのか把握できてないため、今回の問題のポイントはSNOWで更新・新規の判定が自動できるできないかと思います。もしうまく判定できず一律新規になってしまった場合は、私が提案したその面倒な2ステップを考慮する必要があると思っています。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-12-2023 10:36 PM
貴重なアドバイスありがとうございます。
「更新」に自動判定されてないことを確認出来たので、新規のスクリプトを作成しようと思います。
コードに対する知識が乏しいため至らぬ点があったかと存じますが、ありがとうございました。