問い合わせ対応フロー, 対応者自動調整 20211021
顧客からの問い合わせを受け付け、回答します。割振リスト(Google シート)を用い、回答担当者が自動で割り振られます。割振リストは、割振順序・担当者メールアドレスが記載されています。特定の担当者へ割振を多くしたい等の調整をつけることができます。ワークフローの基礎部分は、「問い合わせ対応フロー(*)」を元に作成されています。(*)https://support.questetra.com/ja/templates/inquiry-response-flow-20130924/
作業担当者 (スイムレーンの数:3)
  • サポート部門
    • サポート部門のスタッフ。(電話やFAXで問い合わせ受信時を想定)
  • 対応担当者
    • 問い合わせ回答担当者。
  • 助言翻訳担当
    • 回答を日本語以外の他言語に翻訳する担当者(対応担当者から指名)
仕事の流れ (ワークフロー図の複雑度:34)
  • 1 1.回答引受/回答文作成
    • 回答担当車は、回答文を作成し回答します。必要に応じて翻訳や技術者からの助言を依頼先を指定して求めることもできます。
  • 28 1a.問合受信/回答文作成
    • 回答担当車は、回答文を作成し回答します。必要に応じて翻訳や技術者からの助言を依頼先を指定して求めることもできます。
  • 6 2.回答文作成
    • 回答担当者は、回答文を作成し回答します。時間を要する場合は一時回答を送信します。
  • 14 3.最終回答文作成
    • 回答担当者は、回答文を作成し回答します。
  • 4 a.助言翻訳依頼に回答する
    • 依頼された担当者は、翻訳や助言などの協力をします。
  • 5 b.助言翻訳の結果を確認する
    • 回答者は、助言などを確認し、必要であればさらに依頼者を指名して質問できます。
  • 19 x1. 回答メールset (Subject)
    • システムは、着信メールの件名を保存しているデータ項目の値を、送信メールの件名として参照されるデータ項目にセットします。
  • 20 x2a. 回答メールset (To)
    • システムは、着信メールの Fromアドレスを保存しているデータ項目の値を、送信メールの Toアドレスとして参照されるデータ項目にセットします。
  • 23 x2b.回答メールset (To)
    • システムは、公開フォームでアドレスが入力されたデータ項目の値を、送信メールの Toアドレスとして参照されるデータ項目にセットします。
  • 25 x3. 回答メールset (Cc)
    • システムは、着信メールの Ccアドレスを保存しているデータ項目の値を、送信メールの Ccアドレスとして参照されるデータ項目にセットします。
  • 21 x4a.回答メールset (Body)
    • システムは、指定されたデータ項目に入力された値を挿入した文字列を生成し送信メールの本文として参照されるデータ項目にセットします。
  • 24 x4b.回答メールset (Body)
    • システムは、指定されたデータ項目に入力された値を挿入した文字列を生成し送信メールの本文として参照されるデータ項目にセットします。
  • 22 x5.会社名set
  • 8 x6a.会社名を件名に追記
    • システムは、指定されたデータ項目の値をプロセス件名に追記します。
  • 15 x6b.会社名を件名に追記
    • システムは、指定されたデータ項目の値をプロセス件名に追記します。
  • 33 今回担当者更新(割当中)
    • システムは、割当リストへ前回担当者(割振済)情報を更新します。
  • 32 前回担当者更新(開放)
    • システムは、割当リストへ前回担当者(割振解除)情報を更新します。
  • 29 割振情報取得
    • システムは、割当リストの情報を取得します。
  • 30 割振決定
    • システムは、回答担当者を割振ます。
受け渡しされるビジネスプロセス変数 (データ項目の数:41)
  • ▼受信メール内容▼ 0
  • 受信メールSubject q_Email_Subject 1
    • 開始イベント(メール)にて自動セットされます
  • 受信メールFrom表示名 q_Display 35
    • 開始イベント(メール)にて自動セットされます
  • 受信メールFrom q_From 2
    • 開始イベント(メール)にて自動セットされます
  • 受信メールCC q_CC 3
    • 開始イベント(メール)にて自動セットされます
  • 受信メール本文 q_Body 4
    • 開始イベント(メール)にて自動セットされます
  • 受信メール添付ファイル q_Email_Attachment 5
  • ▼受信Form内容▼ 6
  • 氏名 q_Last 7 *
    • 開始イベント(フォーム)にて入力されます
  • ふりがな q_First 8
    • 開始イベント(フォーム)にて入力されます
  • 会社名 q_Company 9
    • 開始イベント(フォーム)にて入力されます
  • 電話番号 q_Phone 10
    • 開始イベント(フォーム)にて入力されます
  • メールアドレス q_Email 11 *
    • 開始イベント(フォーム)にて入力されます
  • お問い合わせ内容 q_Inquiry 12 *
    • 開始イベント(フォーム)にて入力されます
  • (添付ファイル) q_Form 13
    • 開始イベント(フォーム)にてアップロードされます
  • アンケート1(お問い合わせの種類) q_Type 14
    • 開始イベント(フォーム)にて入力されます
  • アンケート2(Questetra を利用(検討)している業務) q_Questetra 15
    • 開始イベント(フォーム)にて入力されます
  • アンケート3(追伸事項) q_Appendix 16
    • 開始イベント(フォーム)にて入力されます
  • ▼回答担当者/受信内容の整理▼ 17
  • 問合元との契約状況 q_Contract 18
  • 問合元の会社名 q_Company2 19
    • フォーム開始の場合、x5 にて自動セットされます
  • 問合元の担当者名 q_Personnel 20
  • 問合キーワード q_Keywords 21
  • 回答担当者 q_Handler 22
  • 処理期限目安 q_Answer 23
    • processInstanceStartDatetime.addDays(1)
  • ▼助言もしくは翻訳の依頼▼ 24
  • 助言翻訳担当者 q_Advisor 25
  • 社内通信およびメモ q_Memo 26
  • ▼カスタマーサービスからの回答メール▼ 27
  • Subject q_Subject 28
    • メール開始の場合、x1 にて自動セットされます
  • 送信予約 q_Transmission 29
  • To q_To 30
    • x2 にて自動セットされます
  • Cc q_CC2 31
    • メール開始の場合、x3 にて自動セットされます
  • From q_From2 32
    • support@questetra.com
  • 添付ファイル q_Attachment 33
  • 回答メール本文 q_Email_Body 34
    • x4 にて雛形が自動セットされます
  • ▼システム利用情報▼ 40
  • 割振データレコードA列:順番 q_allocation_data_A 36
    • 割振情報(Google シート)の順番データが格納されます。
  • 割振データレコードB列:メアド,フラグ q_previousAllocationFlags 37
    • 割振情報(Google シート)のメアド・割振済フラグデータが格納されます。
  • 更新用データ(前回担当者) q_updatedDataForPreviousAllocation 38
    • 前回担当者の割振状況(Google シート)更新用データが格納されます。
  • 更新用データ(今回担当者) q_updateDataCurrentAllocation 39
    • 今回担当者の割振状況(Google シート)更新用データが格納されます。

フィールド名, Num, 初期値

Download

This archive contains the BPMN icon, which is only available in the Professional edition.

Notes

  • インポート時に組織構造に合わせて、処理担当者設定の関連付けを行います
  • 実使用時には設定されている固定値を変更してください
    • メッセージ送信中間イベント「1次回答」の本文の署名
    • データ項目「From」の初期値
    • 選択型データ項目「アンケート1~3」の表示ラベルの文言
    • データ更新「x4ab.回答メールset (Body)」の[値や式]の署名位部分

Arrangement Tips

「割振決定」自動工程 Script (click to open)
// 割振りデータ仕様(Google SpreadSheet)
// - A列:順番
//  1
//  2
//  3
// - B列:メールアドレス,割振フラグ
//  yamadas@puestetra.com,0
//  yamamoto@puestetra.com,1
//  kato@puestetra.com,0
//     ※現在割り振られているのは、"yamamoto@puestetra.com"
const orders = engine.findDataByVarName("q_allocation_data_A");
const allocations = engine.findDataByVarName("q_previousAllocationFlags");

main();

function main(){
    // ローカルデータ項目
    let orders_arry;
    let allocations_arry;
    let count;
    let targetRowNumber = "not";
    let previousRowNumber;
    let targetMailAddress;
    let targetRow = "";
    let previousRow = "";
    // データチェック:インプットデータ確認
    if ((orders == null)||(orders == "")||(allocations == "")||(allocations == null)){
	     engine.log("インプットデータ不正:空のデータ有");
	      return;
    }
    // 改行区切りでデータ分割(配列化)
    orders_arry = new String(orders).split("\n");
    allocations_arry = new String(allocations).split("\n");
    // データチェック:インプットデータ確認
    if (orders_arry.length != allocations_arry.length){
	     engine.log("インプットデータ不正:メアドか割り振りフラグの数が合わない\n");
	      engine.log("orders_arry.lenght: " + orders_arry.lenght + " allocations_arry.lenght: " + allocations_arry.length);
	       return;
    }
    count = orders_arry.length;
    // 前回割り振り対象者検索・割り振り対象者の配列要素取得
    for (var i=0; i < count; i++){
      engine.log("allocations_arry[i]: " + allocations_arry[i]);
      var arry = new String(allocations_arry[i]).split(",");
      var mail = arry[0];
      var flag = arry[1];
      if (flag === "1"){
	       engine.log("i: " + i);
         previousRowNumber = i;
         targetRowNumber = i + 1;
         break;
       }
     }
    // データチェック:割り振りデータ妥当性
    if (targetRowNumber === "not"){
      engine.log("インプットデータ不正:前回割り振り者が存在しない\n");
      return;
    }
    // データ最後尾の場合、割り振り者を先頭にセット
    if (targetRowNumber === count){
      targetRowNumber = 0;
    }
    // 割り振りデータ更新
    targetRow = orders_arry[targetRowNumber] + "\t" + allocations_arry[targetRowNumber].replace("0","1");
    previousRow = orders_arry[previousRowNumber] + "\t" + allocations_arry[previousRowNumber].replace("1","0");

    // 各データ項目更新
    engine.log("targetRowNumber: " + targetRowNumber);
    engine.log("targetRow: " + targetRow);
    engine.log("previousRow: " + previousRow);
    var array = new String(allocations_arry[targetRowNumber]).split(",");
    targetMailAddress = array[0];
    engine.log("targetMailAddress: " + targetMailAddress);
    engine.setDataByVarName("q_Handler",quserDao.findByEmail(targetMailAddress));
    engine.setDataByVarName("q_updateDataCurrentAllocation",targetRow);
    engine.setDataByVarName("q_updatedDataForPreviousAllocation",previousRow);
    return;
}// ****main()ここまで****

Capture

Appendix

See also

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d人のブロガーが「いいね」をつけました。