--- title: "Event Functionの設定" url: https://docs.catalyst.zoho.com/ja/tutorials/invoice-notifier/python/configure-function/ description: "Event FunctionsとCatalyst Signalsを使用して、Zoho BooksからZoho Cliqへの請求書更新を自動化するイベント駆動アーキテクチャを構築します。" last_updated: 2026-08-17T12:16:04Z service: All Services type: tutorial related_links: - name: "Event Functions" url: /ja/serverless/help/functions/event-functions/ - name: "Functionsディレクトリ構造" url: /ja/cli/v1/project-directory-structure/functions-directory --- # Event Functionの設定 ここでは、Zoho Cliqチャンネルに自動的にメッセージを送信するEvent Function `Cliq_Notifier`を設定します。このメッセージには、支払いが正常に完了した新規顧客の請求書詳細が含まれます。このFunctionは、Catalyst Signalsによってトリガーされた際に実行されます。 [Functionsディレクトリ](https://docs.catalyst.zoho.com/ja/cli/v1/project-directory-structure/functions-directory)、`functions/Cliq_Notifier`には以下が含まれています: - `main.py`メインFunctionファイル - `catalyst-config.json`設定ファイル - 外部ライブラリを追加するための`requirements.txt`ファイル `main.py`ファイルにコードを追加します。 このFunctionには、効率的に動作するために`requests`ライブラリとCatalyst SDKが依存関係として必要です。インストールするには、Functionのディレクトリ(`functions/Cliq_Notifier`)に移動してlibフォルダを作成します。libフォルダから以下のコマンドを実行してください: ```sh pip3 install requests zcatalyst-sdk -t . ``` 依存関係がインストールされます。 ![installing requests dependencies](https://catalyst-docs-development.zohostratus.in/images/tutorials/invoice-notifier/requests-cli.webp) > **Note:** このセクションのコードを確認し、内容を十分に理解してください。 Pythonコードをコピーし、プロジェクトの`functions/Cliq_Notifier`ディレクトリにある`main.py`に貼り付けて、ファイルを保存してください。任意のIDEを使用してアプリケーションのファイルを操作できます。 **main.py** ```python 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() ``` > **Note:** コードをFunctionファイルにコピー&ペーストした後、インラインコメントに示されている通り、以下のプレースホルダーを実際の値に更新してください: - **Zoho Booksドメイン(11行目)**:リージョンに基づいた[**Zoho Books**](https://www.zoho.com/in/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](https://www.zoho.com/cliq/) Organizationのドメインを指定してください。例:cliq.zoho.com、cliq.zoho.eu - **Zoho Cliqチャンネルのユニーク名(15行目)**:支払い済み請求書の更新を投稿する[Zoho Cliqチャンネル](https://help.zoho.com/portal/ja/kb/zoho-cliq/user-guides/channels)のユニーク名を入力してください。 - **Zoho Cliqボットのユニーク名(16行目)**:上記チャンネルに追加された[Zoho Cliqボット](https://www.zoho.com/cliq/help/platform/bots.html)のユニーク名を入力してください。 - **Zoho Accountsドメイン(18行目)**:Catalyst、Zoho Books、Zoho Cliqへのログインに使用する[Zoho Accounts](https://www.accounts.zoho.com/)ドメインを指定してください。例:accounts.zoho.com、accounts.zoho.in - **Client ID(70行目)**:[ステップ4](https://docs.catalyst.zoho.com/ja/tutorials/invoice-notifier/nodejs/register-client/)のクライアント登録時に取得したClient IDを貼り付けてください。 - **Client Secret(71行目)**:[ステップ4](https://docs.catalyst.zoho.com/ja/tutorials/invoice-notifier/java/register-client/)で生成された対応するClient Secretを貼り付けてください。 - **Refresh Token(74行目)**:[ステップ5](https://docs.catalyst.zoho.com/ja/tutorials/invoice-notifier/java/refresh-token/)でAPIクライアントツールを使用して生成したRefresh Tokenを入力してください。 Event Functionの設定が完了しました。