Event Functionの設定
ここでは、Zoho Cliqチャンネルに自動的にメッセージを送信するEvent Function Cliq_Notifierを設定します。このメッセージには、支払いが正常に完了した新規顧客の請求書詳細が含まれます。このFunctionは、Catalyst Signalsによってトリガーされた際に実行されます。
Functionsディレクトリ、functions/Cliq_Notifierには以下が含まれています:
- index.jsメインFunctionファイル
- catalyst-config.json設定ファイル
- Nodeモジュール
- package.jsonおよびpackage-lock.json依存関係ファイル
index.jsファイルにコードを追加します。
このFunctionには、効率的に動作するためにaxiosパッケージが依存関係として必要です。axiosはPromiseベースのHTTPクライアントで、Cliq APIエンドポイントにメッセージを投稿するための非同期HTTPリクエストの送信に使用します。
axiosをインストールするには、Node FunctionのディレクトリDev(functions/Cliq_Notifier)に移動し、以下のコマンドを実行します:
モジュールがインストールされます。
これにより、以下の画像のようにPackage.jsonファイルにaxios依存関係が更新されます。
Node.jsコードをコピーし、プロジェクトのfunctions/Cliq_Notifierディレクトリにあるindex.jsに貼り付けて、ファイルを保存してください。任意のIDEを使用してアプリケーションのファイルを操作できます。
const axios = require('axios');
const catalyst = require('zcatalyst-sdk-node');
const ZBOOKSDOMAIN = "{{YOUR_ZBOOKS_DOMAIN}}"; //リージョンに基づいたZoho Booksドメインを入力してください
const ZBOOKSORG = "{{YOUR_ZBOOKS_ORGANIZATION_ID}}" //Zoho BooksのOrganization IDを入力してください
const ZCLIQDOMAIN = "{{YOUR_ZCLIQ_DOMAIN}}"; //リージョンに基づいたZoho Cliqドメインを入力してください
const ZCLIQ_CHANNEL_UNIQUE_NAME = "{{YOUR_CHANNEL_UNIQUE_NAME}}" //更新を投稿するチャンネルのユニーク名を入力してください
const ZCLIQ_BOT_UNIQUE_NAME = "{{YOUR_BOT_UNIQUE_NAME}}" //メッセージを投稿するボットのユニーク名を入力してください
const ZACCOUNTSDOMAIN = "{{YOUR_ZACCOUNTS_DOMAIN}}" //リージョンに基づいたZoho Accountsドメインを入力してください
module.exports = async (event, context) => {
try {
const rows = transformEventData(event.getRawData());
const requestBody = buildCliqRequestBody(rows);
const accessToken = await getAccessToken(context);
await sendToCliq(requestBody, accessToken);
console.log("Message pushed to channel successfully");
context.closeWithSuccess();
} catch (error) {
console.error('Error occurred:', error);
context.closeWithFailure();
}
};
function transformEventData(rawData) {
let rows = rawData.data.flat();
for (let row of rows) {
const invoiceId = row["Invoice Id"];
delete row["Invoice Id"];
row["Link"] = `https://${ZBOOKSDOMAIN}/app/${ZBOOKSORG}#/invoices/${invoiceId}`;
}
return rows;
}
function buildCliqRequestBody(rows) {
return {
slides: [{
type: "table",
data: {
headers: ["Customer", "Invoice Number", "Amount", "Paid On", "Link"],
rows: rows
}
}],
text: "Here are the invoices marked as Paid in the last hour:"
};
}
async function getAccessToken(context) {
const app = catalyst.initialize(context);
var connector = app.connection({
CliqConnector: {
client_id: "{{YOUR_CLIENT_ID}}", //Client IDを入力してください
client_secret: "{{YOUR_CLIENT_SECRET}}", //Client Secretを入力してください
auth_url: `https://${ZACCOUNTSDOMAIN}/oauth/v2/auth`,
refresh_url: `https://${ZACCOUNTSDOMAIN}/oauth/v2/token`,
refresh_token: "{{YOUR_REFRESH_TOKEN}}" //Refresh Tokenを入力してください
}
})
.getConnector('CliqConnector');
return await connector.getAccessToken();
}
async function sendToCliq(body, accessToken) {
const cliqChannelURL = `https://${ZCLIQDOMAIN}/api/v2/channelsbyname/${ZCLIQ_CHANNEL_UNIQUE_NAME}/message?bot_unique_name=${ZCLIQ_BOT_UNIQUE_NAME}`;
const headers = {
'Content-Type': 'application/json',
'Authorization': 'Zoho-oauthtoken ' + accessToken
};
const response = await axios.post(cliqChannelURL, body, { headers });
}
コードをFunctionファイルにコピー&ペーストした後、インラインコメントに示されている通り、以下のプレースホルダーを実際の値に更新してください:
-
Zoho Booksドメイン(4行目):リージョンに基づいたZoho Books Organizationのドメインを入力してください。例:books.zoho.com、books.zoho.eu、books.zoho.in
-
Zoho Books Organization ID(5行目):Zoho Booksアカウントの一意のOrganization IDを入力してください。
-
Zoho Cliqドメイン(7行目):リージョンに基づいたZoho Cliq Organizationのドメインを指定してください。例:cliq.zoho.com、cliq.zoho.eu
-
Zoho Cliqチャンネルのユニーク名(8行目):支払い済み請求書の更新を投稿するZoho Cliqチャンネルのユニーク名を入力してください。
-
Zoho Cliqボットのユニーク名(9行目):上記チャンネルに追加されたZoho Cliqボットのユニーク名を入力してください。
-
Zoho Accountsドメイン(11行目):Catalyst、Zoho Books、Zoho Cliqへのログインに使用するZoho Accountsドメインを指定してください。例:accounts.zoho.com、accounts.zoho.in
-
Client ID(54行目):ステップ4のクライアント登録時に取得したClient IDを貼り付けてください。
-
Client Secret(55行目):ステップ4で生成された対応するClient Secretを貼り付けてください。
-
Refresh Token(58行目):ステップ5でAPIクライアントツールを使用して生成したRefresh Tokenを入力してください。
Event Functionの設定が完了しました。
最終更新日 2026-03-05 11:43:24 +0530 IST

