case 'location': // 位置情報
const address = webhookData.message.address;
const latitude = webhookData.message.latitude;
const longitude = webhookData.message.longitude;
// SFDC Invoke APIコール
const callHello = (message) => {
const request = require('request-promise');
const options = {
method: 'POST',
headers: { 'Content-Type': 'application/json; charset=UTF-8' },
// Amazon Connect Salesforce lambda packageをAPI GWとして呼び出す
uri: `https://・・・・`,
body: message,
json: true
};
return request(options)
.then(function (parsedBody) {
return parsedBody;
})
.catch(function (err) {
console.log(err);
return null;
});
};
(async () => {
// SFDC ContactID取得
const response1 = await callHello({
"Details": {
"Parameters": {
"sf_operation": "lookup",
"LINE__c": userId,
"sf_object": "Contact",
"sf_fields": "Id, Name, HomePhone"
}
}
});
const SFDC_ContactId = response1.Id;
const SFDC_ContactName = response1.Name;
const SFDC_ContactHomePhone = response1.HomePhone;
// SFDCケース登録
const response2 = await callHello({
"Details": {
"Parameters": {
"sf_operation": "create",
"sf_object": "Case",
"Origin": "LINE",
"Status": "New",
"ContactId": SFDC_ContactId,
"Subject": "修理予約",
"Priority": "High",
"Description": "SFDC登録名:" + SFDC_ContactName + " (LINE登録名:" + displayName + ") 様より車両の修理依頼受領。(ご申告位置情報: " + address + ")" +
"--> 修理対応者決定(修理サービス)"
}
}
});
// LINEエンドユーザへリプライ送信
replyMessage = displayName + 'さん(ご契約名義:' + SFDC_ContactName + '様)、位置情報の送付ありがとうございます。' + address + 'に急行するよう、修理手配中です。しばらくお待ちください。';
Line.replyMessage(replyToken, { type: 'text', text: replyMessage });
// 電話コールバック
var connect;
// Amazon Connectのリージョンを指定してオブジェクト作成
connect = new AWS.Connect({ apiVersion: 'latest', region: "ap-southeast-2" });
// APIリクエストのパラメータ作成
var params = {
ClientToken: null,
// Amazon ConnectのコンタクトフローのID
ContactFlowId: "・・・・・・・・",
// 今回かける先の電話番号は引数で設定
DestinationPhoneNumber: process.env.PHONENUMBER,
// Amazon ConnectのコールセンターのインスタンスID
InstanceId: "・・・・・・・・・",
// かける元の電話番号
SourcePhoneNumber: "+81・・・・・・・・"
};
// APIをキック
var calling = connect.startOutboundVoiceContact(params, function (err, data) {
if (err) {
console.log(err);
} else {
console.log("無事終了");
}
});
})();
break;