Webhookブロックのフォーマッター(Deluge)

Webhookブロックのフォーマッター(Deluge)


APIによる出力データは、チャットの利用者にとってわかりにくい場合があります。このような場合に、Webhookブロックのフォーマッターが役立ちます。フォーマッターでは、Delugeスクリプトを通じてAPIによる出力データの形式を整えることができます。
 
たとえば、APIによって出力される日時の値が「2025-06-02T10:45:00Z」の場合に、値が「2 June 2025, 10:45 AM」となるように形式を変更することが可能です。また、APIによって出力される問い合わせの情報が「ticket_subject and ticket_id」の場合に、「問い合わせ#2034 - 支払いに失敗しました」となるように変更できます。


参考情報:自動ガイドボットのWebhookブロックの概要 

フォーマッターとは

フォーマッターとは、自動ガイドボットのWebhookブロックの機能のひとつです。APIによって出力されたデータを、チャット欄に表示する前に形式を整えることができます。
フォーマッターを通じて行える内容は、以下のとおりです。
  1. 項目名を変更し、値をわかりやすく表示できます
  2. 日時の値の形式を変更できます
  3. 複数の項目の値を統合できます
  4. JSONの複雑な階層の値から、特定の値を抽出できます
  5. リスト内において繰り返しの処理を行い、要約を作成したり、値をわかりやすくしたりできます
 これらの設定は、Delugeを通じて行います。簡単な操作でAPIの設定を行うことが可能です。 
 


フォーマッターのメリット  

フォーマッターを使用することで、APIによって出力されるデータの値を整理できます。
フォーマッターの主なメリットは、以下のとおりです。
  1. チャットの利用者に対して、APIの出力データをわかりやすい値に変換して表示できます
  2. 「ticket_id」や「cust_name」などの値を、他の値に変換できます
  3. チャットの表現や形式に合わせて出力値を変更できます
  4. 必要な情報のみをチャット欄に表示できます
  5. 自動ガイドボットの会話フローにおいて、他のWebhookブロックと組み合わせて使用できます 
 フォーマッターを使用することで、APIの出力データをよりわかりやすくなるように他の値に変換し、チャット欄に表示することが可能です。 
 

使用例   

日時の形式の変更

APIのレスポンス

 { 
   "order_date": "2025-06-02T10:45:00Z" 
 } 

変更後の値:2 June 2025, 10:45 AM

フォーマッターのコード

 formatted_date = order_date.toDateTime("yyyy-MM-dd'T'HH:mm:ss'Z'").toString("d MMMM yyyy, h:mm a"); 
 return {"formatted_date": formatted_date};   

ボットのレスポンス

注文日は、2 June 2025, 10:45 AMです。

この出力値を、次のブロックで使用できます。Info(情報)は、デバッグにのみ使用されます。文字列の出力値は、リストに入れられて処理されます。データ構造をより明確にするには、マップ形式で出力することをお勧めします。  
項目名の変更

APIのレスポンス

 { 
   "cust_name": "Talaash Thedal" 
 }  

変更後の値:"顧客名":"Talaash Thedal"
 

フォーマッターのコード

 customer_name = cust_name; 
 return {"customer_name": customer_name}; 

ボットのレスポンス

顧客名: Talaash Thedal
 
フォーマッターを通じて項目の名前を変更しても、他のブロックの変数名には影響ありません。会話フローにおいて、Webhookに関連付けられている変数のみが直接参照されます。 
項目の値の統合

APIのレスポンス

 { 
   "ticket_id": "2034", 
   "ticket_subject": "Payment failed" 
 } 

変更後の値:問い合わせ#2034 - 支払いに失敗しました

 

フォーマッターのコード 

 issue_summary = "Issue #" + ticket_id + " - " + ticket_subject; 
 return {"issue_summary": issue_summary}; 

  

ボットのレスポンス

問い合わせ#2034 - 支払いに失敗しました

値の抽出

APIのレスポンス 

 { 
   "user": { 
     "details": { 
       "contact": { 
         "email": "aarav@example.com
       } 
     } 
   } 
 } 

変更後の値:ユーザーのメールアドレスのみ

 

フォーマッターのコード

 email_id = user.get("details").get("contact").get("email"); 
 return {"email_id": email_id}; 

ボットのレスポンス

連絡先のメールアドレス:taro.kawane@example.com

配列のデータの抽出

APIのレスポンス 

 { 
   "recent_orders": [ 
     { "order_id": "123", "status": "Delivered" }, 
     { "order_id": "124", "status": "Processing" } 
   ] 
 } 

変更後の値:

  • 注文#123 - 配送済み

  • 注文#124 - 処理中

 

フォーマッターのコード

 orders = recent_orders; 
 summary = ""; 
 for each order in orders 
 { 
   summary += "Order #" + order.get("order_id") + " - " + order.get("status") + "\n"; 
 } 
 return {"order_summary": summary};   
 

ボットのレスポンス

  • 注文#123 - 配送済み

  • 注文#124 - 処理中

   

JSONの複雑な階層の値から特定の値を抽出   

APIによって複数の部門が出力されるのに対して、標準の部門のみを表示したいとします。

JSONの複雑な階層の値から特定の値を抽出
JSONの複雑な階層の値から特定の値を抽出
APIによって複数の部門が出力されるのに対して、標準の部門のみを表示したいとします。
 
APIのレスポンス
 { 
   "data": [ 
     { 
       "name": "Support", 
       "isDefault": false 
     }, 
     { 
       "name": "Sales", 
       "isDefault": true 
     } 
   ] 
 } 

変更後の値:標準の部門のみ("isDefault": trueとなっている部門のみ)

フォーマッターのコード
 // 値のないコレクションを作成し、条件に一致する部門を保存します 

 result = Collection();   
 // APIの出力データから、すべての部門のリストを取得します 
 allDepartments = response.get("data");   
 // リスト内の各部門を確認します 
  

 

     // 該当の部門が標準の部門か確認します 
     isDefault = department.get("isDefault");   
     // 標準の部門の場合、結果のコレクションに追加します 
     if(isDefault == true) 
     { 
         result.insert(department); 
     } 
 }  
 
 // 標準の部門の最後のリストを出力します 
 return result; 

ボットのレスポンス
標準の部門:営業

出力値を次のブロックで使用し、特定の項目の値を抽出することが可能です。
 

使用に関するヒント


  1. 対象のデータに関して、APIのJSONのレスポンスの構造を確認することをお勧めします。
  2. コードのエラーを解決したり、値のプレビューを表示したりする際には、Delugeの情報をご確認ください。
  3. Webhookブロックの直後でフォーマッターを使用することで、次のブロックで出力値を使用できます。
  4. フォーマッターを使用するにあたって、条件と変数を組み合わせることで、より動的な値を出力できます。


参考情報:自動ガイドボットのWebhookブロックの概要