お知らせ:

当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

Advanced I/O Functionの設定

functionコンポーネントを設定して、ダイヤラーアプリのコーディングを始めましょう。

functionのディレクトリfunctions/dialerには以下が含まれています:

  • index.jsメインfunctionファイル
  • catalyst-config.json設定ファイル
  • Nodeモジュール
  • package.jsonおよびpackage-lock.json依存関係ファイル

Node.js用パッケージのインストール

先に進む前に、アプリケーションのfunctionsディレクトリに2つの追加パッケージをインストールする必要があります。

Express

コードでExpress Node.jsパッケージをインポートするには、システムにExpress依存関係をインストールする必要があります。Expressフレームワークは、ルートの管理やHTTPリクエストへの応答に使用されます。

ローカルマシンにExpress.jsをインストールするには、ターミナルでfunctionのホームディレクトリ(functions/dialer)に移動し、以下のコマンドを実行します:

copy
$
npm install express --save

これにより、Expressモジュールがインストールされ、依存関係が保存されます。

install-express

Twilio

このチュートリアルでは、Twilioパッケージもインストールする必要があります。TwilioライブラリはTwilio APIへのHTTPリクエストを行うことができます。以下のコマンドを実行してTwilioの依存関係を追加します。

copy
$
npm install twilio

install-twilio

この情報はpackage.jsonファイルにも更新されます。

package-json

次に、functionファイルにコードを追加しましょう。Node jsコードをコピーして、functions/dialerディレクトリのindex.jsに貼り付けます。アプリケーションのファイルの作業には、お好みのIDEを使用できます。

Note: このセクションに記載されたコードを十分に理解するために、必ず目を通してください。functionとクライアントのアーキテクチャについては、次のセクションで説明します。
index.js
copy
const express = require("express");
const app = express();
var twilio = require('twilio');
const VoiceResponse = require("twilio").twiml.VoiceResponse;
var catalyst = require('zcatalyst-sdk-node');
var YOUR_TWILIO_NUMBER = '+xxxxxxxxxx';
var accountSid = "xxxxxxxxxxxxxx";
var authToken = "7xxxxxxxxxxxxxxx8";
var twilioClient = twilio(accountSid, authToken);
var bodyParser = require('body-parser');
app.use(bodyParser.json()); // JSONエンコードされたボディをサポート
app.use(bodyParser.urlencoded({ extended: true })); // URLエンコードされたボディをサポート

app.post("/makeCall", async (req, res) => { try { var salesNumber = req.body.salesNumber; console.log(req.body) const catalystApp = catalyst.initialize(req); let rowData = { fromNumber: req.body.phoneNumber, toNumber: req.body.salesNumber }; console.log(rowData) const catalystTable = catalystApp.datastore().table(‘CallLog’); const data = await catalystTable.insertRow(rowData); var url = ‘https://’ + req.headers.host + ‘/server/dialer/outbound/’ + encodeURIComponent(salesNumber);

var options = { to: req.body.phoneNumber, from: YOUR_TWILIO_NUMBER, url: url, method: ‘post’, statusCallbackEvent: [‘answered’, ‘completed’], statusCallback: ‘https://’ + req.headers.host + ‘/server/dialer/statusCheck?ROWID=’ + data.ROWID, statusCallbackMethod: ‘POST’ };

twilioClient.calls.create(options).then((call) => { res.status(200).send({ message: ‘Call Initiated’ }); }).catch((error) => { console.log(error); res.status(500).send({ “error”: error }); }); } catch (e) { console.log(“Exception while making a Call ::” + e); res.status(500).send({ “error”: ‘Internal Server Error Occured. Please Try again after sometime.’ }); } });

app.post(’/outbound/:salesNumber’, function (req, res) {

try { var salesNumber = req.params.salesNumber; var twimlResponse = new VoiceResponse(); twimlResponse.say(‘Thanks for trying out the Catalyst Dialer App. Please hold on so that we can connect with your Customer… ‘, { voice: ‘alice’ }); twimlResponse.dial(salesNumber); res.status(200).send(twimlResponse.toString()); } catch (e) { console.log(“Exception while making Outbound Call ::” + e); res.status(500).send({ “error”: ‘Internal Server Error Occured. Please Try again after sometime.’ }); } });

app.post(’/statusCheck’, async (req, res) => {

try { const catalystApp = catalyst.initialize(req); if (req.body.CallStatus === “completed”) { let updatedRowData = { callDuration: req.body.CallDuration, callStatus: req.body.CallStatus, calledCountry: req.body.CalledCountry, calledState: req.body.CalledState, timeOfCall: req.body.Timestamp, ROWID: req.body.ROWID }; console.log(updatedRowData) const catalystTable = catalystApp.datastore().table(‘CallLog’); await catalystTable.updateRow(updatedRowData); } res.status(200).send(’ StatusCheck Completed’); } catch (e) { console.log(“Exception while checking status :: " + e); res.status(500).send({ “error”: ‘Internal Server Error Occured. Please Try again after sometime.’ }); } });

app.get(’/getLogs’, async function (req, res) {

try { const catalystApp = catalyst.initialize(req); const query = ‘SELECT callDuration,callStatus,calledCountry,timeOfCall,fromNumber,toNumber FROM CallLog’; const queryResult = await catalystApp.zcql().executeZCQLQuery(query); res.status(200).send(queryResult); } catch (e) { console.log(“Exception while getting Call Logs ::” + e); res.status(500).send({ “error”: ‘Internal Server Error Occured. Please Try again after sometime.’ }); }

});

module.exports = app;

View more

Note:TwilioのアカウントID、関連するTwilio電話番号、およびAuthTokenの値を6行目、7行目、8行目に必ず追加してください。

functionsディレクトリの設定が完了しました。

最終更新日 2026-03-05 11:43:24 +0530 IST