第558話:クレーマーを減らす「受付番号」の採番工夫

2017年10月23日

業務:「資料請求」の受付

  1. 資料請求の受付件数
  2. 見積の提出件数
  3. 契約件数

古典的なマーケティング手法ではあるが「1.資料請求の受付件数」は「3.契約件数」に直結する指標だ。その相関は極めて強い。したがって多くの会社で KPI 設定されている。車会社、保険会社、引越会社、設計事務所、、、規模の大小や業種業態を問わないのだろう。

今どき、スムーズなワークフローを実現すべく、顧客からの申込をクラウド型ワークフローの「フォーム開始イベント」で受け付ける会社も少なくない。ワークフローを使うことで、「宛名印刷」や「配送」といった下流工程もヌケモレなく実行される。

そして「受付完了メール」の自動送信(メール送信イベントの配置)も「王道」と言ってイイ。顧客は「リクエストを受け付けてもらえた」と認知することができる。また、本文には『受付番号』を記述する。そうすれば『受付番号』をたよりに電話やチャットで疑問点を問い合わせることができる。

課題:受付番号だけの本人確認

『受付番号』は「プロセス連番」(#{processInstanceSequenceNumber})が都合良い。何と言っても KPI 管理がラクだ。

しかし同時に「類推されやすい番号」でもある。たとえば電話やチャットで「申込のキャンセル」が来た際、「本人確認」をせざるをえない状況になりうる。つまり、誠実そうな声で「受付番号123番をキャンセルして下さい」と言われればそのまま受け付けても良いのだろうが、悪意のありそうな方を相手にした際に「エントリの氏名」や「メールアドレス」を聞いて本人確認することになる。これは顧客差別とも言われかねない。

かと言って、「類推されにくい番号」として暗号文のような長い番号にするとイロイロ不便だ。「KPI 管理」がメンドウになるだけではない。電話口で伝えてもらいにくいし、一意であることを担保するのも意外とムツカシイ。うーむ。。。

[資料請求への対応プロセス]

解決:受付IDの工夫

「受付番号」「予約番号」「見積書番号」など。。。顧客とのコミュニケーションには「識別番号」が有効です。何と言っても「チームとしての対応」が可能となります。しかしながら、もしそれが「類推されやすい番号」だった場合、「なりすまし」を防ぐために他の情報を使った本人確認が必要となる可能性があります。延いては業務効率を下げてしまうことにもなりかねません。

この様に「なりすましリスク」を少しでも低減する必要があるなら「連番+3桁パスコード」(例:123-777)のような書式を検討します。

つまり「ID と Password の組み合わせ」にも似た『受付番号』にしておくことで、「受付完了メール」を受信した方からのリクエストであることを担保します。この程度の長さであれば電話口で伝えてもらう際にも問題になりません。(ちなみに「パスコードだけ」にしてしまうと一意に識別できなくなります)

<データセット工程の設定例>
#{#sformat('%03d', processInstanceSequenceNumber)}-#{#sformat("%03.0f", data['17'])}
※ 「%03d」は、先頭に「0」を追加して3文字にする処理
※ 「%03.0f」は、整数部は先頭に「0」を追加して3文字にし、小数部はカット(0文字に)する処理

<データ設定のコンフィグ画面>

<メール送信のコンフィグ画面>

考察:自動工程にプログラミング知識は必要か?

この例の「3桁パスコード」は、サーバサイド側で生成される『乱数』です。案件が自動工程『乱数を自動取得』に到達すれば、「3桁パスコード」に自動的に値がセットされます。

業務プロセスの設計者は、『乱数ジェネレータ』アイコンを業務フロー上に配置し、そのコンフィグを設定するだけで、サーバサイドでの自動処理を簡単に追加することができます。

注意すべきは、この自動工程アイコンが、プロセスモデラの標準アイコンにない点です。あらかじめプロセスモデラー アドオンにある『乱数ジェネレータ』をインポートしておく必要があります。

なお「乱数を生成させる工程」と聞けば、プログラミング知識や高度なコンピュータ知識が必要と思われがちですが、プロセスモデラー アドオンとしてパッケージ化された自動工程は、簡単な設定だけで業務プロセス定義に組み込むことができます。(スクリプトの中身が理解できる必要はありません/もちろん気になる場合は JavaScript の読める方に解説してもらうのも良いでしょう)。この例では「最大数:1000」を設定しておくだけで、毎回「0から999までの乱数」が自動セットされるようになります。

[資料請求への対応プロセス:「1.資料発送」画面]

<アドオン定義のソース>
<?xml version="1.0" encoding="UTF-8"?><service-task-definition>

<label>Random Number Generator</label>
<label locale="ja">乱数ジェネレータ</label>

<summary>A random number that does not exceed the config "A" (e.g.: 0 to 99) will be stored in the Data item selected in the config "B"
</summary>
<summary locale="ja">"A"でセットした上限値を超えないランダムな整数が、"B"で選択した数値型データ項目に格納されます
</summary>

<help-page-url>https://www.questetra.com/tour/m4/m415/addon-random-number/</help-page-url>
<help-page-url locale="ja">https://www.questetra.com/ja/tour/m4/m415/addon-random-number/</help-page-url>


<configs>
  <config name="conf_MaxNum" required="true" form-type="TEXTFIELD">
    <label>A: Set Max Number (100 returns 0 - 99)</label>
    <label locale="ja">A: 乱数上限値をセットしてください (100: 0 - 99)</label>
  </config>
  <config name="conf_DataIdB" required="true" form-type="SELECT" select-data-type="DECIMAL">
    <label>B: Select NUMERIC DATA for Random Number (update)</label>
    <label locale="ja">B: 乱数が格納される数値型データを選択してください (更新)</label>
  </config>
</configs>


<script><![CDATA[
// Random Number Generator (ver. 20181018)
// (c) 2017, Questetra, Inc. (the MIT License)

//// == Config Retrieving / 工程コンフィグの参照 ==
var maxNum  = configs.get( "conf_MaxNum" ) - 0;
// convet 'java.lang.String' to 'javascript number'
var dataIdB = configs.get( "conf_DataIdB" ) + "";
// convet 'java.lang.String' to 'javascript string'

//// == Data Retrieving / ワークフローデータの参照 ==
// (none)

//// == Calculating / 演算 ==
var randNum = Math.floor( Math.random() * maxNum );
// Math.random(): 0.00 to 0.99

//// == Data Updating / ワークフローデータへの代入 ==
engine.setDataByNumber( dataIdB, java.math.BigDecimal( randNum ) );
]]></script>

<icon>
(省略)
</icon>
</service-task-definition>

<データ項目一覧画面>


[雛形ダウンロード (無料)]
<類似プロセス>
≪関連記事≫

[英文記事 (English Entry) ]

0 件のコメント :

コメントを投稿