Secret Ninja Blog

Support Engineering Manager してます

Zendeskのユーザプロフィールをリッチにして、色々と自動化できるようにする話

Zendeskは、サポートと顧客との間のインタフェースになっており、顧客のあらゆる困りごとが蓄積されている。 この困りごとを適切なタイミングで適切な人に適切な方法でデリバリーしたい。 例えば、契約直後の顧客アカウントから問い合わせがきたら、その問い合わせ内容を担当営業やSEに共有したい。

こうした契約情報に紐づいたトリガーを作りたかったが、現状下記の課題があった。

  • ZendeskはEmailベースで管理されているが、契約情報を管理するSFDCでは契約単位で管理されており、ZendeskにあるEmailがかならずしもSFDCにあるわけではなかった。
  • 上記に関連し、ZendeskのSFDCアドオンを使っても、正しい情報が取得できないことがあった。(SFDCのContactにいないケースが多々あった。メーリングリストやエイリアスなどで。)

f:id:toru-takahashi:20171219235046p:plain

また、SFDCアドオンで取得した情報を元にトリガーを設定することができなかった。(する方法はあるかもしれないが、上記の課題があり、確認していなかった)

一方で、サービスのアカウント情報とZendeskのユーザ情報とSFDCの契約情報を全てトレジャーデータに集めて、KPIの作成するというワークフローは実施済みだった。

blog.torut.tokyo

なのでこれを流用して、ユーザ毎の情報をZendeskに書き戻すことで、Zendesk上で任意の条件でトリガーを実施することができそうだった。

残念ながら、TreasureDataにもZendeskのユーザ情報をアップデートする機能がなかったので、自分でembulk-output-zendesk_usersを作った。

blog.torut.tokyo

上記のPluginでは、TagsとUserFieldsを更新することができる。 Tagsの場合には事前準備は不要だが、UserFieldsの場合には事前に定義が必要。

f:id:toru-takahashi:20171219234917p:plain

下図のようなSFDCの情報を日時で更新できるようにした。

f:id:toru-takahashi:20171219235358p:plain

これにより、ZendeskのTriggerで上記の条件を使えるようになり、 サポートチケットが来た時にユーザが所属する契約に紐づいた様々なアクションがZendesk上で完結した状態で行えるようになった。

便利…!!

最終的な処理の流れのイメージは下図。

f:id:toru-takahashi:20171219235952p:plain

(ちなみにembulk-input-zendesk / embulk-output-zendesk_users / embulk-input-mysqlはあるOSSで公開されているので、 真ん中のプラットフォームはTreasureData以外でもなんでも大丈夫)

どんなタイミングで通知が欲しいかなどは、営業チームと相談して色々試行錯誤中。