Zendeskで顧客の契約内容に応じた詳細なルール付けをしたり、サービスの利用状況(例えば、Private Alphaの機能を利用しているか、など)を利用して、 Zendeskのヘルプセンターの表示/非表示をさせたりとか、SLAに応じたトリガーの設定にも活かしたい、というやりたいことがあった。 他にも、契約後半年以内アカウントを利用する顧客がサポートに問い合わせをしてきたら、自動でその内容をアカウントのセールスオーナーにも転送する、といったことをしたかった。 (これは現状、Zapierとかを使って無理くりやっている。。。)
しかし、そのために必要なSFDCやサービスのアカウント情報などを全てZendesk側で変数として利用可能な状態にはできていなかった。 また、SFDCはアカウントベースの管理、ZendeskはEmailベースのため、Emailの組み合わせが必ずしもうまく紐付けができないケースもあった。
そのため、データを一箇所に集めて前処理を行なって、綺麗なデータにしてからZendeskのユーザ情報を更新したいという目的があった。 そこで、ZendeskのUser IDを元に、ユーザのTagsとUser Fieldsを更新するembulk-output pluginを作った。
https://github.com/toru-takahashi/embulk-output-zendesk_users
これでどういうことができるかというと、というと
SFDC / Zendesk / TD accountのデータを全部まるっと集めて、まるっとJOINして、 必要な項目はJSONに集約して、custom fieldsにExportしている。
設定サンプルは下記。
TagsにはArray型。User_fieldsにはフラットなkey-valueのJSONが来ることを想定している。
in: type: config columns: - {name: id, type: long} - {name: tags, type: json} - {name: user_fields, type: json} values: - - [ 1194094257, ["tag1", "tag2"], { "account_id": "", "field01": "2013-02-27T20:35:55Z" } ] - [ 9811482788, ["tag3"], { "account_id": "1" } ] out: type: zendesk_users login_url: https://obscura.zendesk.com auth_method: token username: test@test.com token: xxxxxxxxxx method: update id_column: id tags_column: tags user_fields_column: user_fields
現状、自分はZendeskのtagsとuser_filedsのアップデートできればいいので、 未知のユーザのcreateだったり、そのほかのフィールドのアップデートには対応していない。
もしもほしければ、Githubのissueに書いておいてもらえれば、気が向いた時に付け加えます。