Event Functionの設定
ここでは、Zoho Cliqチャンネルに自動的にメッセージを送信するEvent Function Cliq_Notifierを設定します。このメッセージには、支払いが正常に完了した新規顧客の請求書詳細が含まれます。このFunctionは、Catalyst Signalsによってトリガーされた際に実行されます。
Functionsディレクトリ、functions/Cliq_Notifierには以下が含まれています:
- main.pyメインFunctionファイル
- catalyst-config.json設定ファイル
- 外部ライブラリを追加するためのrequirements.txtファイル
main.pyファイルにコードを追加します。
このFunctionには、効率的に動作するためにrequestsライブラリとCatalyst SDKが依存関係として必要です。インストールするには、Functionのディレクトリ(functions/Cliq_Notifier)に移動してlibフォルダを作成します。libフォルダから以下のコマンドを実行してください:
依存関係がインストールされます。
Pythonコードをコピーし、プロジェクトのfunctions/Cliq_Notifierディレクトリにあるmain.pyに貼り付けて、ファイルを保存してください。任意のIDEを使用してアプリケーションのファイルを操作できます。
import sys
sys.path.insert(0, 'lib')
import logging
import traceback
import requests
import zcatalyst_sdk
logger = logging.getLogger()
zbooksdomain = "{{YOUR_ZBOOKS_DOMAIN}}"; #リージョンに基づいたZoho Booksドメインを入力してください
zbooksorg = "{{YOUR_ZBOOKS_ORGANIZATION_ID}}" #Zoho BooksのOrganization IDを入力してください
zcliqdomain = "{{YOUR_ZCLIQ_DOMAIN}}"; #リージョンに基づいたZoho Cliqドメインを入力してください
zcliq_channel_unique_name = "{{YOUR_CHANNEL_UNIQUE_NAME}}" #更新を投稿するチャンネルのユニーク名を入力してください
zcliq_bot_unique_name = "{{YOUR_BOT_UNIQUE_NAME}}" #メッセージを投稿するボットのユニーク名を入力してください
zaccountsdomain = "{{YOUR_ZACCOUNTS_DOMAIN}}" #リージョンに基づいたZoho Accountsドメインを入力してください
def handler(event, context):
try:
data = extract_invoice_data(event)
rows = transform_invoice_data(data)
request_body = prepare_cliq_request(rows)
access_token = get_access_token()
send_to_cliq(request_body, access_token)
logger.info("Message pushed to channel successfully")
context.close_with_success()
except Exception as e:
logger.error("An unexpected error occurred:\n%s", traceback.format_exc())
context.close_with_failure()
def extract_invoice_data(event):
event_payload = event.get_raw_data()
data = event_payload.get("data")
rows = [invoice for invoices in data for invoice in invoices]
return rows
def transform_invoice_data(rows):
for row in rows:
invoice_id = row.get("Invoice Id")
row["Link"] = f"https://{zbooksdomain}/app/{zbooksorg}#/invoices/{invoice_id}"
del row["Invoice Id"]
return rows
def prepare_cliq_request(rows):
request_body = {
"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:"
}
return request_body
def get_access_token():
app = zcatalyst_sdk.initialize()
connector_config = {
"CliqConnector": {
"client_id": "{{YOUR_CLIENT_ID}}", #Client IDを入力してください
"client_secret": "{{YOUR_CLIENT_SECRET}}", #Client Secretを入力してください
"auth_url": f"https://{zaccountsdomain}/oauth/v2/token",
"refresh_url": f"https://{zaccountsdomain}/oauth/v2/token",
"refresh_token": "{{YOUR_REFRESH_TOKEN}}" #Refresh Tokenを入力してください
}
}
connector = app.connection(connector_config).get_connector("CliqConnector")
access_token = connector.get_access_token()
return access_token
def send_to_cliq(payload, access_token):
cliq_channel_url = f"https://{zcliqdomain}/api/v2/channelsbyname/{zcliq_channel_unique_name}/message?bot_unique_name={zcliq_bot_unique_name}"
headers = {
"Content-Type": "application/json",
"Authorization": f"Zoho-oauthtoken {access_token}"
}
response = requests.post(cliq_channel_url, headers=headers, json=payload)
response.raise_for_status()
コードをFunctionファイルにコピー&ペーストした後、インラインコメントに示されている通り、以下のプレースホルダーを実際の値に更新してください:
-
Zoho Booksドメイン(11行目):リージョンに基づいたZoho Books Organizationのドメインを入力してください。例:books.zoho.com、books.zoho.eu、books.zoho.in
-
Zoho Books Organization ID(12行目):Zoho Booksアカウントの一意のOrganization IDを入力してください。
-
Zoho Cliqドメイン(14行目):リージョンに基づいたZoho Cliq Organizationのドメインを指定してください。例:cliq.zoho.com、cliq.zoho.eu
-
Zoho Cliqチャンネルのユニーク名(15行目):支払い済み請求書の更新を投稿するZoho Cliqチャンネルのユニーク名を入力してください。
-
Zoho Cliqボットのユニーク名(16行目):上記チャンネルに追加されたZoho Cliqボットのユニーク名を入力してください。
-
Zoho Accountsドメイン(18行目):Catalyst、Zoho Books、Zoho Cliqへのログインに使用するZoho Accountsドメインを指定してください。例:accounts.zoho.com、accounts.zoho.in
-
Client ID(70行目):ステップ4のクライアント登録時に取得したClient IDを貼り付けてください。
-
Client Secret(71行目):ステップ4で生成された対応するClient Secretを貼り付けてください。
-
Refresh Token(74行目):ステップ5でAPIクライアントツールを使用して生成したRefresh Tokenを入力してください。
Event Functionの設定が完了しました。
最終更新日 2026-03-05 11:43:24 +0530 IST
