⚾
Virtual AgentのDynamic choice inputでRecordをScriptでフィルタリングする[ServiceNow]
TL;DR
自動入力されるサンプルコードでは動作しませんでした。下記公式記事のScripting Choice Value Expressionsをご覧ください。
Situation
StudioでVirtual AgentのDynamic choice inputを作成し、RecordをScriptでフィルタリングしようとするも動作しない。サンプルコードをコメントアウトしただけなのに動作しない。
Dynamic choice inputでPopulate choices byでRecordを選択。Filter choicesにはScriptを選択。すると、下記スクリプトが自動入力されていると思う。
(function execute(table) {
/* Write a glide record query, and return the glide record.
For example:
var gr = new GlideRecordSecure(table);
gr.addEncodedQuery('active=true^number=INC0010099');
gr.query();
if(gr.next()) {
return gr;
}
*/
})(table)
上記スクリプトを下記スクリプトに書き換えて実行してみるも、No records response messageで指定した内容が表示されるのみ。
(function execute(table) {
var gr = new GlideRecordSecure(table);
gr.addEncodedQuery('active=true');
gr.query();
if(gr.next()) {
return gr;
}
})(table)
Solution
スクリプトでGlideRecordオブジェクトではなく、1つの選択肢表すDictionaryの、Arrayを返す必要がある。
サンプルコード
(function execute(table) {
var options = [];
var gr = new GlideRecordSecure(table);
gr.addEncodedQuery('active=true');
gr.query();
while(gr.next()) {
options.push({ 'value': gr.getUniqueValue(),
'label': grUser.getValue('number')});
}
return options;
})(table)
Summary
もし、サンプルコードの方法で動作している方がいればお教えください。
また、間違いなどがあればご指摘ください。
↓偉大なる参考記事
フォロー、Twitterフォローもよろしくお願いいたします。
Discussion