Zoho Sign書類情報を追加するためのCRMコールバック関数の設定方法
Zoho Sign書類情報を追加するためのCRMコールバック関数の設定方法
お知らせ:
当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の
英語版
を参照してください。
シナリオ:
Zoho CRM で自動化を設定し、ドキュメントを Zoho Sign に送信しています。毎回ドキュメントを確認するたびに、Zoho Sign でドキュメントを開く必要がありますが、この方法ではドキュメントのステータスを確認するのが大変です。CRM 側でコールバック関数を設定して、Zoho Sign ドキュメントの詳細を追加することはできますか?
Zoho Sign の拡張機能を使って CRM から署名用にドキュメントを送信した場合は、ドキュメントは CRM 内で更新されます。ただし、自動化やワークフローなど、その他のケースでは更新されません。
カスタムのコールバック関数を作成する必要があります。以下の手順に従って設定してください。
次のコードを貼り付けます:
crmAPIRequestMap = crmAPIRequest。toMap();
request_body = crmAPIRequestMap。取得する('本文');
info request_body;
requestMap = request_body。toMap();
response = Map();
response。put('status_code',200);
response。put('コンテンツの種類','application/json');
hasRequests = requestMap。containKey('requests');
if(requestMap。containKey('requests') && requestMap。containKey('通知'))
{
notificationMap = requestMap。取得する('通知').toMap();
requestStr = requestMap。取得する('requests');
requestObj = requestStr。toMap();
response。put('本文',{'what we got':requestObj,'通知':notificationMap});
if(requestObj。containKey('request_status') && notificationMap。containKey('operation_type'))
{
operationType = notificationMap。取得する('operation_type');
//if(requestObj.get('request_status').equals('完了'))
if(operationType。equals('RequestCompleted') || operationType。equals('RequestSigningSuccess') || operationType。equals('RequestRecalled') || operationType。equals('RequestRejected') || operationType。equals('RequestExpired'))
{
requestStatus = '署名用に送信済み';
if(operationType。equals('RequestCompleted'))
{
requestStatus = 'Signed';
}
else if(operationType。equals('RequestRecalled'))
{
requestStatus = 'Recalled';
}
else if(operationType。equals('RequestRejected'))
{
requestStatus = '却下済み';
}
else if(operationType。equals('RequestExpired'))
{
requestStatus = '期限切れ';
}
requestId = requestObj。取得する('request_id');
//すでに存在するか確認
zsignrecord = Zoho。crm。searchRecords('zohosign__ZohoSign_Documents','(zohosign__ZohoSign_Document_ID:equals:' + requestId + ')');
if(zsignrecord。size() > 0 && zsignrecord。取得する(0).containKey('zohosign__DeleteEdit_Preview_or_Position_Signature_Fields'))
{
info 'データはすでに存在します';
response。put('本文',{'メッセージ':'データはすでに存在するため、更新します'});
if(zsignrecord。取得する(0).取得する('zohosign__DeleteEdit_Preview_or_Position_Signature_Fields') == 無効)
{
//更新が必要
zsrecordId = zsignrecord.get(0).get('id');
recordInfo = {'zohosign__Document_Status':requestStatus};
resp = Zoho.crm.createRecord('zohosign__ZohoSign_Documents',zsrecordId,recordInfo);
if(resp.containKey('id'))
{
response.put('body',{'message':'データを更新しました'});
}
}
else
{
return {'crmAPIResponse':response};
}
}
else
{
response.put('body',{'request_id':requestId});
associatedModule = 'Contacts';
associatedModuleKey = 'zohosign__Contact';
actions = requestObj.get('actions');
email = actions.get(0).get('recipient_email');
data = Zoho.crm.searchRecords('Contacts','(Email:equals:' + email + ')');
if(data.size() <= 0)
{
data = Zoho.crm.searchRecords('Leads','(Email:equals:' + email + ')');
if(data.size() > 0)
{
associatedModule = 'Leads';
associatedModuleKey = 'zohosign__Lead';
}
}
if(data.size() > 0)
{
info 'data found';
leadid = data.get(0).get('id');
recordInfo = {'Name':requestObj.get('request_name'),associatedModuleKey:leadid,'zohosign__Document_Status':requestStatus,'zohosign__ZohoSign_Document_ID':requestId,'zohosign__Date_Completed':today,'zohosign__Module_Name':associatedModule,'zohosign__Module_Record_ID':leadid};
//CRM に ZohoSign レコードを作成
resp = Zoho.crm.createRecord('zohosign__ZohoSign_Documents',recordInfo);
if(resp.containKey('id'))
{
zsDocId = resp.get('id');
respDoc = Zoho.sign.downloadDocument(requestId);
Zoho.crm.attachFile('zohosign__ZohoSign_Documents',zsDocId,respDoc);
response.put('body',{'attached to record':zsDocId});
//すべての受信者に対して Zoho Sign 受信者レコードを作成
for each action in actions
{
recpStatus = '署名待ち';
if(action.get('action_status').equals('SIGNED'))
{
recpStatus = 'Signed';
}
else if(action.get('action_status').equals('REJECTED'))
{
recpStatus = 'キャンセル済み';
}
recpRecordInfo = {'名前':操作。取得する('recipient_name'),'zohosign__Email':操作。取得する('recipient_email'),'zohosign__ZohoSign_Document':zsDocId,'zohosign__Recipient_Order':操作。取得する('signing_order'),'zohosign__Recipient_Type':操作。取得する('action_type'),'zohosign__Recipient_Status':recpStatus};
Zoho。crm。createRecord('zohosign__ZohoSign_Recipients',recpRecordInfo);
}
}
else
{
response。put('本文',{'エラー':resp});
}
}
}
else
{
response。put('本文',{'未完了':requestObj});
}
}
else
{
response。put('本文',{'リクエストステータスなし':requestObj});
}
}
else
{
info 'エラー';
response。put('本文',{'エラー':'requests キーがありません'});
}
返品する {'crmAPIResponse':response}