こちらでご覧いただいた通り、[詳細設定] セクションでは、タスクがセットアップされたときにエンド ユーザーに表示される通知メッセージの初期設定を有効にしたり制限したりするための通知タスクの設定や、通知メッセージのリマインダーを定義できます。また必要に応じて、ユーザーに送信されるメッセージの重複を防止することもできます。
Defined Advanced Settings
詳細設定セクションでは、タスクの最初のポーリング結果を定義したり、通知のリマインダーを定義したり、TwitterやFacebookのフィードなどで通知メッセージが重複しないようにBotプラットフォームが使用するキーを指定したりすることができます。タスクの詳細設定を開始するには、下図のように、設定タブで詳細設定セクションの展開アイコンをクリックします。
初期ポーリング設定
起始ボーリングは、タスクを設定した直後にエンドユーザーにイベントを表示できるようにするために定義できるオプションです。たとえば、CNN ニュース ボットの場合、初期ポーリングを有効にして、エンドユーザーが当該アプリケーションにタスクを追加するとすぐに、最新 10 件のニュース記事を表示します。最初のポーリングが定義されていない場合、タスクのポーリングは、指定されたトリガー間隔が経過した後に開始されます。最初のポーリングを有効にして設定するには、最初のポーリングを実行セクションではいを選択します。[投稿件数] フィールドに、次の図に示すように、エンドユーザーのアプリケーションに即時に掲載する過去の投稿の件数を入力します。
通知リマインダーの設定
Googleカレンダーのイベント更新タスクなどの一部のタスクでは、タスクにリマインダーを追加することができます。リマインダーは、元のタスクメッセージを受け取ると、エンドユーザーにリマインダー メッセージを送信します。例えば、エンドユーザーはイベントの前にタスクメッセージ付くの30分間および15分間のリマインダー を設置とする場合があります。リマインダーを設定するには、通知のリマインダーを有効化セクションではいを選択します。リマインダー調整セクションは下記の図の通りに表示します。 通知のリマインダーを設定するには:
- [通知リマインダーの有効化] セクションで、[はい] をクリックして通知リマインダーの設定を表示します。
- [リマインダーの頻度] セクションでは、テキスト ボックスをクリックして 5 分ごとから 7 日ごとの間隔を 1 つ以上選択します。
- [リマインダー メッセージ] テキスト ボックスで、エンドユーザーに表示するイベント リマインダーのメッセージを入力します。例:
print('Event starts in '+__frequency__);
システムで生成されたキーを使用するには、任意のキーを選択をクリックして、ドロップダウンリストからキーを選択します。 - [識別イベントの変更] セクションで、新規イベントの認識に使用するコンマ区切りリストから 1 つ以上のキーを入力します。たとえば、id, LastModifiedDateTime, subject のようになります。
- [イベント開始時間] セクションで、イベントの開始時間を含む通知タスクの ペイロード フィールドを使用して、エンドユーザーにイベントの開始日時を表示するメッセージを入力します。例えば、
if (due_at) { print(due_at); } else if (due_on) { var dt = new Date(created_at); var dtt = new Date(due_on); dt.setYear(dtt.getFullYear()); dt.setMonth(dtt.getMonth()); dt.setDate(dtt.getDate()); dt.setHours(00); dt.setMinutes(00); dt.setSeconds(00) print(dt.toISOString()); }
- [繰り返し識別フォーマット] セクションで、ペイロードで使う [RRule] や [Cron] のいずれかを繰り返しパターン形式のタイプとして選択します。
- [繰り返しのパターン] セクションでは、たとえば毎週の定例会議のような、繰り返しが予定されているイベントの頻度としてエンドユーザーに表示する文字列を定義します。例えば、
if (typeof(Recurrence) !== 'undefined' && Recurrence) { var map = new Object(); map['Daily'] = "DAILY"; map['Weekly'] = "WEEKLY"; map['AbsoluteMonthly'] = "MONTHLY"; map['RelativeMonthly'] = "MONTHLY"; map['AbsoluteYearly'] = "YEARLY"; map['AbsoluteYearly'] = "YEARLY"; map['First'] = 1 map['Second'] = 2 map['Third'] = 3 map['Fourth'] = 4 map['Last'] = -1 map['Sunday'] = 'SU' map['Monday'] = 'MO' map['Tuesday'] = 'TU' map['Wednesday'] = 'WE' map['Thursday'] = 'TH' map['Friday'] = 'FR' map['Saturday'] = 'SA' var rrule = ''; if (typeof(Recurrence.Pattern.Type) !== 'undefined') { var freq = map[Recurrence.Pattern.Type]; rrule = rrule + 'FREQ=' + freq + ';'; } if (typeof(Recurrence.Range.StartDate) !== 'undefined') { var stDate = new Date(Recurrence.Range.StartDate).toISOString(); rrule = rrule + 'DTSTART=' + stDate + ';'; } if (typeof(Recurrence.Pattern.Interval) !== 'undefined') { var interval = Recurrence.Pattern.Interval rrule = rrule + 'INTERVAL=' + interval + ';'; } if (typeof(Recurrence.Range.EndDate) !== 'undefined' && Recurrence.Range.Type !== 'NoEnd') { var edDate = new Date(Recurrence.Range.EndDate).toISOString(); rrule = rrule + 'UNTIL=' + edDate + ';'; } if (typeof(Recurrence.Pattern.Month) !== 'undefined' && Recurrence.Pattern.Month !== 0) { rrule = rrule + 'BYMONTH=' + Recurrence.Pattern.Month + ';'; } if (typeof(Recurrence.Pattern.DayOfMonth) !== 'undefined' && Recurrence.Pattern.DayOfMonth !== 0) { rrule = rrule + 'BYMONTHDAY=' + Recurrence.Pattern.DayOfMonth + ';'; } if (typeof(Recurrence.Pattern.Index) !== 'undefined') { var wno = map[Recurrence.Pattern.Index]; rrule = rrule + 'BYSETPOS=' + wno + ';'; } if (typeof(Recurrence.Pattern.DaysOfWeek) !== 'undefined') { var arr = []; for (var i = 0; i < Recurrence.Pattern.DaysOfWeek.length; i++) { arr.push(map[Recurrence.Pattern.DaysOfWeek[i]]) } rrule = rrule + 'BYDAY=' + arr.join(',') + ';'; } print(rrule); }
- [繰り返し識別フォーマット] フィールドが [Cron] に設定されている場合、[イベント終了] セクションを定義して、直近の繰り返しイベントの終了日時をエンドユーザーに表示する文字列を定義します。
[保存] をクリックして設定を保存します。
重複メッセージの防止通知
レスポンスオブジェクトのフィルタを追加した後、エンドユーザーに重複したメッセージが表示されないようにするために戦略を適用する必要があるかどうかを判断する必要があります。例えば、RSSタスクを設定する場合、同じ件名のメッセージが重複しないようにしたり、Facebookの場合には、投稿にコメントが追加されるたびにメッセージが重複しないようにしたりすることができます。Kore.aiでは、重複戦略に2つのオプションのうち1つを選択することができます。
- 該当無し – 通知メッセージの重複防止のデフォルトの設定です。各着信タスク ペイロードがハッシュされ、最新タスク 500 件のハッシュ値が保持されます。新規タスク ペイロードは、タスク通知メッセージの重複を防ぐためにリストと比較されます。このオプションは、ほとんどのタスクに適用することができます。
- ExcludeByCachedIds – 最大500個のハッシュ値のキーのキャッシュされたハッシュ値に基づいて、Kore.aiタスクアラートメッセージをフィルタリングしたり重複を防いだりするために使用される、コンマ区切りの一覧に1つ以上の応答識別子キーを入力する場合に選択します。キーのハッシュ値のいずれかが応答オブジェクトと一致した場合、通知メッセージはフィルタリングされ、表示されません。RSS通知タイプの場合、RSS XMLのペイロードはJSONとして解析されます。RSS 項目で絞り込む場合、
$..guid[0]._
と入力してXMLの < GUID > タグを JSON に解析したものを使用して、以下のようにメッセージの重複を防止します。{ "guid": [ "_": "some link" ] }
タスクのメッセージが重複しないよう設定を定義するには、下図のように、設定タブで詳細設定セクションの展開アイコンをクリックして、重複戦略セクションを表示します。