画面フローを使ってソフトフォン発信してみた

##前置き##
この記事は、前回の記事（https://qiita.com/Kataoka_Satoya/items/dfc82aff857ac0c11ce9 )でご紹介したコンポーネントを活用してみたという趣旨の記事です。
まだ御覧になっていない方は先にそちらを御覧ください。


##ケース:取引先レコードから立ち上げた画面フローで電話番号を入力せずに電話を掛ける##
Salesforceの電話番号項目はそのままクリックすると普通の電話アプリが立ち上がります。
ですが、クラウドPBX等を使用している場合IP電話のアプリで掛けたいのに普通の電話アプリが立ち上がってしまって結局手打ちとかコピペということになってしまいます。
数式項目で作ってもいいのですがなるだけ無駄な項目は作成したくありません。
そこで今回のフローを使用します。（ある程度フローの知識があることを前提として解説していますのでご了承ください）

今回作成したフローはこんな感じ（実際に自社で使用しているものです）
![flowlink6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/bbf54e7e-b56b-8d58-1b91-e845d849d964.png)

**①検索処理**
取引先だけでなく取引先責任者やリードでも使用できるように起動されたIDがどのオブジェクトのものなのかレコードの検索を入れています。
![flowlink7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/d7f881e0-95c5-04ba-ef51-97110428bf09.png)
画像の赤枠部分をフローを使用したいオブジェクト毎に作るイメージですね
![flowlink9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/a026ca28-5461-21c3-6236-0edc5feb155e.png)

**②選択画面作成**
次に発信する端末を選択させる画面です、PCでのソフトフォンの発信も想定して作っていますが、端末がスマホのみの想定であれば不要かと思います。
![flowlink12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/12c045e5-f4d9-6c26-583d-59f2ab8d31c5.png)
選択リストにPCとスマホの選択肢リソースを追加します。（回線の選択はPBX側の仕様によってできるできないがあると思いますので詳しい説明は割愛させていただきます。）
![flowlink10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/136f5a66-a066-db39-7e70-84ecba1dc360.png)
![flowlink11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/b904b708-f242-aace-eb24-9c860d5045ab.png)

**③回線オブジェクト検索（必須ではない）**
自社で使う場合は、回線の選択後電話回線の情報を格納しているカスタムオブジェクトを検索しています。自社で使っているクラウドPBXは【外線発信番号】というユニーク値を相手先の電話番号の頭につけることで回線の切り替えができるため、ヒットしたレコードの外線発信番号項目+取引先の電話番号項目のテキストテンプレートも作成します。（取引先責任者等の他のオブジェクトがある場合は該当のオブジェクトの電話番号項目毎にテキストテンプレートを作成してください）
![flowlink13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/29717b79-056d-4a3a-1e50-6b27908fdbcf.png)
![flowlink14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/2e8fd814-5f70-6649-a832-97a8bac04412.png)
![flowlink15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/79a488bf-11aa-2dcd-4f05-05e4b05e7c0f.png)

**④発信画面作成**
いよいよ発信画面の作成です。
画面フローは取得した項目値によって項目の表示非表示が細かく設定できるので、それを活用して設定していきます。
![flowlink16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/cb965550-19a8-b814-bb90-144e3c66db1a.png)

まずは、最初に取得したオブジェクト毎にセクションを分けてどのオブジェクトを取得しても画面に表示させるように作っていきます。（IDがnull値でなければ表示させる条件としています。）
![flowlink17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/269fbfb2-9a5a-570a-b1ae-996c63a498b5.png)
さらに、対応した電話番号項目×最初の画面で作成した端末数分のフローでリンクコンポーネントを配置します。（例：取引先の場合は電話項目×PC+スマホで2、取引先責任者の場合は電話+携帯項目×PC+スマホで4となります）
それぞれのコンポーネントに表示条件として、該当の電話番号項目が空白ではないか、最初に選ばれた端末が何かを設定します。
![flowlink19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/56ebc069-3892-4fec-8783-d8be07062569.png)

配置したコンポーネントのURL項目に端末がPCの場合は[callto://先ほど作成した外線発信番号+電話番号のテキストテンプレート]を入力
スマホの場合は[groundwire://先ほど作成した外線発信番号+電話番号のテキストテンプレート]を入力（弊社はIP電話のスマホアプリとしてgroundwireを採用しているためこのような記述となりますが、別アプリの場合は該当のアプリケーションの呼び出しプロトコルに置き換えて下さい）
表示テキストに発信と入力して、その他情報として出したい項目がある場合は適宜配置していきます。
自社の場合は情報+通話内容をメモしたかったのでロングテキスト項目を一番下に配置してみました。
![flowlink20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/c79e4f95-1d43-4a54-ec46-764c3fecc736.png)

**⑤発信した履歴をTODOとして記録する**
最後にかけた履歴をオブジェクトへ活動履歴として残しておく処理です。電話をかけるだけでいいのであればここは必要ありませんが通常のオペレーションを考えれば確実に残しておいた方がいいと思います。
![flowlink21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/6061fff1-b160-e075-8be0-9ad0137a1d50.png)

自社の場合は取引先の他に取引先責任者とリードを今回対象のオブジェクトとしているのでTODOに対して紐づけるのがwhatidかwhoidなのかを分岐させます。
![flowlink22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/cb37ef91-f828-e25f-d1bb-8242b0dcd47d.png)

それぞれ変数を用意して取得したオブジェクトのIDを追加します。
![flowlink23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/b6993f7d-1ccc-6305-3b09-52edbf569462.png)

最後にレコードの作成でTODOの各項目値に適宜割り当てを行ったら完成です。
![flowlink24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/a5da3cb5-3616-156b-55d9-7feda9279691.png)

##使ってみる##
実際にフローを配置して使ってみます。アクションボタンで取引先に配置してみました。アクションボタンの追加方法が分からないという方に関してはこちらのヘルプページを見てみてください（https://help.salesforce.com/s/articleView?id=sf.bi_explorer_add_action_to_object.htm&type=5 )

![flowlink25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/be4d5cac-9727-14f9-8f39-c288934e3d59.png)

ボタンを押すとまず選択画面が立ち上がるので、回線と端末をそれぞれ選択します。
![flowlink26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/f3a53164-c25f-eb32-7f92-af5a4a303a5c.png)

次へ進むとこのようにリンクボタンが配置された画面になりました。
![flowlink27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/718b6502-dea8-f38d-8c5c-c44789e2ec69.png)

発信ボタンを押すと、Calltoプロトコルに割り当てられているソフトが起動するはずです。
![flowlink28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/33bde05d-6f28-d3e7-4ab8-48a71285b9ab.png)
![flowlink29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/b58fd884-fd39-73cd-90f2-e99a6b15c057.png)

通話が終わったら、メモを入力して終了です。TODOも問題なく記録されました。
![flowlink30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/3a54d0f1-904b-e9f5-31c8-61bf93963f2e.png)
![flowlink31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278110/a4c498ef-4efb-6131-f33f-33c1799be00d.png)

スマホで使っても問題なく動作しました。（経験上ソフトフォンはリンクをクリックした時点で発信されますが、スマホアプリの場合はその後アプリ側でコールボタンを押してからの発信となります）

##最後に##
いかがでしたでしょうか。
クラウドPBX入れるなら、セールスフォースと連携させたいけど連携費用が高くて見送っている場合等はこのようにセールスフォース側の工夫でどうにかできたりする場合もあります。
弊社ではこの他にも様々なセールスフォース側の工夫で費用を抑えて便利にする実績もあります。
現状の運用でのランニングコストや今から導入するものでコストを抑えたい場合等、お困りの方はお気軽にお問い合わせください。