2
Help us understand the problem. What are the problem?

posted at

updated at

Organization

【AWS】【Salesforce】CTIフローからLambda関数を呼び出す

1.はじめに

どうも、ARIの名古屋支社に勤務している愛知県民です♪
(/・ω・)/

今回は少し応用として、CTIフローからLambda関数を呼び出す方法について記事にしたいと思います。
以下の記事の内容を組み合わせて、CTIフローからApexクラスのメソッドを、
ApexクラスのメソッドからLamda関数を呼び出すことで実現します。

この記事がAWSやSalesforceについて勉強中の方の参考になれば幸いです♪
(*^^)v

2.用語の説明

2.1.Apexとは

Apexとは、JavaベースのSalesforce独自のプログラム言語です。

Salesforce内のオブジェクトの検索や作成をするメソッド等が提供されており、
それらを組み合わせて処理を記述することができます。

Apexクラスとは、オブジェクト指向におけるクラスと同様のものとなります。

2.2.CTIフローとは

CTIフローとはCTI Adapterの機能の1つで、
ボタンのクリックや着信をトリガーとして特定のレコードを作成したり、
ポップアップを表示したりすることができます。
(Salesforce内のコンタクトフロー的なものという認識です。)

ちなみに、他のCTI Adapterの機能としては以下の3種類があります。

  • Attributes
  • Presence Sync Rules
  • Features

2.3.Lambdaとは

LambdaとはAWSのサービスの1つで、コードを書くだけで即実行ができるサービスのことです。
サーバの設定等が不要なため、便利です。

ただし、15分以上続けて実行することはできないため、
複雑なアプリケーションの場合はEC2やECRでの実行が必要となります。

3.前提条件

以下に前提条件を示します。

  • Sandboxが作成済であること
  • CTI Adapterのインストールが完了していること
    ※本記事におけるCTI Adapterのバージョンは5.17です

4.概要

今回は例として「statusCode = 200」および「message = Salesforce-Test」を
返す以下のLambda関数を呼び出し、画面上にポップアップさせたいと思います。

lambda_function.py
import json

def lambda_handler(event, context):
    return {
        'statusCode':'200',
        'message':'Salesforce-Test'
    }

また、構成図は以下となります。

010_構成図.png

5.AWSでの設定

5.1.AWS環境にログインします。
5.2.以下の記事を参考に、裏でLambda関数が動くREST APIを作成します。
(他の方の記事ですが、いつか自分で同様の記事を作成するかもです・・・)

6.SalesforceのSandboxでの設定

6.1.Sandboxにログインします。
6.2.記事の手順を参考に、以下のコンポーネント3つを作成し、本番環境にアップロードします。

  • Apexクラス「CallLambda」
  • 「CallLambda」のテストクラス
  • Mock

7.Salesforceの本番環境での設定

7.1.本番環境にログインします。
7.2.記事の手順を参考に、CTIフローを作成します。

また、記事の手順5.3における設定は以下となります。

010_CTIフローの詳細.png
番号 項目 設定内容
apexClass CallLambda
methodName callLambda
methodParams want=statusCode もしくは want=message
message $.actions.uid-(ブロック①のID).results.runApex
message エラー

8.動作確認

8.1.Salesforce上でCCP開き、右側にある「<」を選択します。

030_CCPの<マークを選択.png

8.2.CTI Actionの右の「Execute」を選択します。

040_CTI_Actionを起動.png

8.3.1.手順7.2の設定でmethodParamsを「want=statusCode」にした場合は、以下のポップアップが表示されます。

020_want=statusCodeの場合.png

8.3.2.手順7.2の設定でmethodParamsを「want=message」にした場合は、以下のポップアップが表示されます。

030_want=messageの場合.png

9.おわりに

ここまで読んで下さり、ありがとうございます!!!
(^^)

今までに使った知識を利用して、CTIフローからLambda関数を呼び出すことができました。
構成自体はシンプルでも、Apexクラスのテストや、APIゲートウェイの設定等、色々やることが多く勉強になりました。

次はVisualforceからApexクラスを呼び出す方法について書く・・・かもしれません。
(:3_ヽ)_

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
2
Help us understand the problem. What are the problem?