OAuth 2.0の使用 - サーバーレス関数
OAuth 2.0
OAuth 2.0プロトコルを使用して、関数にアクセスできます。OAuth 2.0メソッドを使用すると、特定のデータへのアクセスを許可する特定のスコープを持つことで、ユーザー名とパスワードを非公開にしながら、特定のデータを任意のアプリケーションと共有できます。
OAuth 2.0メソッドで関数を利用できるようにするには、まずクライアントをZoho CRMに登録する必要があります。クライアントアプリケーションの登録方法については、こちらをご覧ください。
ただし、次のいくつかの点に注意する必要があります。
- HTTP GET方式を使用する場合のクライアントのスコープは、次のとおりです。
ZohoCRM.functions.execute.READ
- HTTP POST方式を使用する場合のクライアントのスコープは、次のとおりです。
ZohoCRM.functions.execute.CREATE
認証が完了したら、関数の作成に進むことができます。
関連項目:
- Zoho CRMの関数.
- APIのバージョン2.0を使用する関数の連携タスク。
- Delugeスクリプト - リファレンスガイド。
- 外部連携 - 関数内でAPIを呼び出すことで、Zoho CRMを任意の外部サービスアプリケーションに連携できます。
- ウィジェット - ユーザーが外部サービスアプリケーションからの情報を利用できるようにするZoho CRMの組み込み可能なUIコンポーネントです。
APIとして使用可能な関数を使用できる状況は数多くあります。たとえば、組織の業績の統計データを確認し特定の制限を超えた場合にトリガーするように関数を設定できます。このドキュメントでは、関数がAPIとして提供される外部ソースを介して実行されるサンプル関数を紹介しています。
サンプル関数:
シナリオ:
顧客の同意を得て、顧客をニュースレターに登録する必要があるとします。これは、セキュリティーを有効にし、プライバシーを侵害しないようにするためです。
連絡先データの表示ページにボタンがあります。ボタンをクリックするとウィジェットが開き、(エージェントが入力する)登録フォームが表示されます。ウィジェットを作成するには、ウィジェットのヘルプを参照してください。
ウィジェットを通じて、登録フォームが送信されます。同意フォームが記載されたメールを投稿すると、お客さまに送信されます。お客さまが同意フォームに同意すると、連絡先に関する情報がMailChimpのキャンペーンのリストに追加されます。
必要なアプリケーション:
- MailChimp - ニュースレター用
- Google ドライブ - 同意フォーム
要件:
- MailChimpとGoogle ドライブの外部連携を設定してください。
- この関数で、MailChimpとGoogle ドライブAPIを呼び出します。
- 関数をAPIに変換します。
- ウィジェットを作成し、その中で関数を呼び出します。
外部連携の設定:
関数で外部サービスアプリケーションを利用してデータ転送をしやすくするには、まずZoho CRMと外部サービスソフトウェアとの連携を設定する必要があります。この例では、MailChimpとGoogle ドライブが使用されます。詳細はこちらをご覧ください。
MailChimpの場合:
Google ドライブの場合:
関数の作成:
要件に従って関数を作成する手順は、2つの部分に分かれています。
パート1:関数コードの書き込み
次のコードを使用してスタンドアロン関数を作成してください。
関数コードは次のとおりです。
string subscribeNewsletter(string listId,string emailAddress,string extraDetails){
mailChimpURL = "https://us18.api.mailchimp.com/3.0/";
if(isNull(listId))
{
//デフォルトリスト
listId = "2a9a3690fd";
}
if(isNull(emailAddress))
{
return "Email Address cannot be null";
}
//すべてのメンバーを取得
membersList = invokeurl
[
url :mailChimpURL + "/lists/" + listId + "/members"
type :GET
parameters:""
connection:<CONNECTION_LINKNAME>
];
//リストに登録されているメンバー
for each memberInfo in membersList.get("members")
{
if(emailAddress.equals(memberInfo.get("email_address")))
{
return "The member is already subscribed to Zoho Newsletter";
}
}
//Google ドライブからすべてのドキュメントを入手する
gdriveURL = "https://www.googleapis.com/drive/v2/files";
fileList = invokeurl
[
url :gdriveURL
type :GET
parameters:""
connection:<CONNECTION_LINKNAME>
];
//同意フォームのダウンロードURLを取得する
webContentLink = null;
for each fileInfo in fileList.get("items")
{
title = fileInfo.get("title");
if(title.equals("Consent-Form.docx"))
{
webContentLink = fileInfo.get("webContentLink");
break;
}
}
if(isNull(webContentLink))
{
return "No Document Found on Drive.Docuemnt Name ::: Consent-Form.docx";
}
//通知を送信 -
name = "Guest";
signature = "Zoho";
if(!isNull(extraDetails))
{
if(extraDetails.contains("name"))
{
name = extraDetails.get("name");
}
if(extraDetails.contains("signature"))
{
signature = extraDetails.get("signature");
}
}
sendmail
[
from :zoho.adminuserid
to :emailAddress
subject :"consent form"
message :"Hi " + name + ",<expression></expression><div><br></div><div>Zohoニュースレターの登録を申し込むには、</div><br /><div><br /><a target='_blank' href='" + webContentLink + "'>同意フォーム</a>をダウンロードしてnewsletter@xyz.comにメールで送信してください。</div><div><br></div><div><br></div><div>よろしくお願いいたします。</div><div>" + signature + "<br></div>" ] if(extraDetails.contains("mobile"))
{
sendsms
[
to :extraDetails.get("mobile")
message:"Consent Form has been sent to your mail id :- " + emailAddress
];
}
return "Consent form sent successfully"; }
注:
- リクエストボディー全体を関数内で使用することはできません。引数内で送受信する必要があります。
リクエストボディー全体を含む引数を設定してください。
上記の関数では、関数引数の1つとして「extraDetails」があります。これは、ユーザーから名前と署名を取得するために使用されます。これは、関数に渡される引数の数を知る方法がない場合に役立ちます。
関数の中に存在する引数の数を知る方法がないので、1つの引数(この場合は「extraDetails」)の中にリクエストボディー全体を含めることができます。
注:
- 「listId」の値は「2a9a3690fd」になります(nullの場合)。
- 「emailAddress」は必須です。
- 「extraDetails」引数は、リクエストボディー全体を含む、追加情報を渡すために提供されます。
- 「listId」、「emailAddress」は文字列型です。
- 「extraDetails」は文字列型であり、JSONを「extraDetails」で渡しています。
パート2:関数をAPIとして使用可能にする
関数が作成、テスト、保存されたら、関数をAPIに変換できます。
- [設定] > [開発者向け情報] > [関数]に移動してください。
- APIの作成が必要な、対応する関数の[設定]アイコンをクリックしてください。
- [REST API]をクリックしてください。
- [OAuth2]スライダーを有効にします。
- [保存]をクリックしてください。
ウィジェット内での関数の呼び出し
今度は実際の作業部分です。この関数はAPI呼び出しに変換されているため、任意のウィジェット、アプリ、またはソフトウェアでその関数のAPIコードを使用し、要件に基づいてトリガーするように設定できます。
ウィジェットを作成するには、次のHTMLコード(ニュースレターの同意フォーム)を使用します。ウィジェットの作成方法については、ここをクリックしてください。
HTMLコード:
<h2>XYZ Newsletter</h2>
<div class="container">
<h2<Subscribe to our Newsletter</h2>
</div>
<div class="container" style="background-color:white">
<input type="text" id="name" placeholder="Name" name="name" required>
<input type="text" placeholder="Email address" name="mail" required id="email">
<label>
<input type="checkbox" checked="checked" name="subscribe">Daily Newsletter
</label>
</div>
<div class="container">
<input type="submit" value="Subscribe" id="subscribeButton">
</div>
<span id="res1">登録を申し込むには上のボタンをクリックしてください</span>
スクリプト(JavaScript):
<script type="text/javascript">
$("#subscribeButton").click(function() {
var extraDetails = {};
extraDetails.name = $("#name").val();
extraDetails.signature = "XYZ";
var arguments = {};
arguments.extraDetails = extraDetails;
arguments.emailAddress = $("#email").val();
var data = {
"arguments": JSON.stringify(arguments),
}
ZOHO.embeddedApp.init()
.then(function() {
ZOHO.CRM.FUNCTIONS.execute("subscribenewsletter", data)
.then(function(resp) {
$('#res1').text(JSON.stringify(resp));
}).catch(function(resp) {
$('#res1').text(JSON.stringify(resp));
})
});
});
注:
- 上記のスクリプトは、CRM内に配置されたウィジェットに対してのみ機能します。
- 関数の連携タスクの詳細については、ここをクリックしてください。
結果:
ニュースレターの登録:
登録メールの取得:
同意フォームがメーラーに返送されると、ニュースレター登録が有効になります。
サーバーレス関数を使用しない場合の欠点:
ユーザーは次の操作を手動で行う必要があります。
- アプリケーションをMailChimpとGoogle ドライブに登録する。
- OAuth2フローを処理するためのコーディングを行う。
- MailChimp APIを呼び出して、ユーザーの有無を確認する。
- Google ドライブAPIを呼び出して、ドキュメントのURLを取得する。
- お客さまにメールとSMSを送信するためのコーディングを行う。
上記の手順からわかるように、多くの関連する手順があり、ウィジェットのコードとウィジェットの機能を手動で記述する必要があります。しかし、この方法は時間がかかり、多くの手作業が必要になります。サーバーレス関数として機能させることで、このような事態を回避できます。