> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Acuity Scheduling

以下の[Webhookツール](/docs/ja/reception-ai/integrations/webhooks)を使用すると、受付担当が予約タイプの空き時間を確認し、発信者の予約を空いている時間枠に登録できます。Acuityからクライアントに通常の確認メールが送信されます。

## 始める前に

### プランを確認する

AcuityでAPIアクセスを利用できるのは最上位プラン（Premium、旧Powerhouse）のみです。ほかのプランでは、以下のツールを使用すると403エラーが発生します。

### API認証情報を取得する

Acuityで **Integrations** を開き、**API** を見つけて、**User ID** と **API Key** をコピーします。

### 認証ヘッダーを作成する

Acuityでは、User IDをユーザー名、APIキーをパスワードとして使用します。ターミナルで両方のプレースホルダーを置き換えてエンコードします。

```bash
printf 'USER_ID:API_KEY' | base64
```

ヘッダー値は`Basic `の後に出力結果を続けたものです。

> **Warning**
>
> APIキーをオンラインエンコーダーに貼り付けないでください。APIキーを入手した人は誰でも、予約やクライアント情報を
> 閲覧・変更できます。

### 予約タイプIDを確認する

受付担当が予約を登録する予約タイプの直接予約リンクをコピーします。リンク内の`appointmentType=`の後にある数字がIDです。以下のツールでは、`APPOINTMENT_TYPE_ID`の代わりにそのIDを使用します。

## ツールを作成する

ツールごとに **Integrations** に移動し、**Add integration** を選択して、**Webhook Tool** を選びます。次に、**Assign to agents** を **Receptionist** に設定します。

### 空き時間を確認する

| フィールド                | 値                                                                                                            |
| -------------------- | ------------------------------------------------------------------------------------------------------------ |
| **Name**             | `check_acuity_availability`                                                                                  |
| **Description**      | 「指定した1日の予約可能な時間を一覧表示します。発信者に時間を提案する前に使用してください。」                                                              |
| **Method**           | GET                                                                                                          |
| **URL**              | `https://acuityscheduling.com/api/v1/availability/times`                                                     |
| **Request Headers**  | `Authorization`：`Basic `の後にエンコードした認証情報を続ける                                                                   |
| **Query Parameters** | `appointmentTypeID`（数値、必須）：「常に正確な値`APPOINTMENT_TYPE_ID`を使用します。」  `date`（文字列、必須）：「確認する日付をYYYY-MM-DD形式で指定します。」 |

### 予約を登録する

| フィールド               | 値                                                                                                                                                                                                                                                                                |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name**            | `book_acuity_appointment`                                                                                                                                                                                                                                                        |
| **Description**     | 「発信者が空き時間を選択したら、その時間に予約を登録します。先に日付と時刻を確認してください。」                                                                                                                                                                                                                                 |
| **Method**          | POST                                                                                                                                                                                                                                                                             |
| **URL**             | `https://acuityscheduling.com/api/v1/appointments`                                                                                                                                                                                                                               |
| **Request Headers** | `Authorization`：`Basic `の後にエンコードした認証情報を続ける                                                                                                                                                                                                                                       |
| **Body Parameters** | `datetime`（文字列、必須）：「`check_acuity_availability`が`time`値として返したものと完全に同じ選択済み時刻。」  `appointmentTypeID`（数値、必須）：「常に正確な値`APPOINTMENT_TYPE_ID`を使用します。」  `firstName`（文字列、必須）：「発信者の名。」  `lastName`（文字列、必須）：「発信者の姓。」  `email`（文字列、必須）：「発信者のメールアドレス。スペルを確認してください。」  `phone`（文字列）：「発信者の電話番号。」 |

各ツールで **Enable** を選択してから、予約を依頼して[受付担当をテスト](/docs/ja/reception-ai/receptionist/testing)します。予約がAcuityカレンダーに表示されます。

> **Tip**
>
> 複数の予約タイプを登録するには、両方のツールの「常に正確な値」をリストに置き換えます。例：
> 「30分の相談には`111`、60分のセッションには`222`を使用します。」

## 制限事項

* Acuityではすべての予約にメールアドレスが必要なため、受付担当が発信者にメールアドレスのスペルを確認します。
* 問診フォームの回答はリストとして送信されますが、Webhookツールではリストを送信できません。予約メモを設定できるのは、Acuityの空き状況チェックをスキップする管理者予約のみです。そのため、上記のツールではどちらも設定しません。
* このツールでは予約のキャンセルや日程変更はできません。これらの操作にはURL内に予約IDが必要です。

## トラブルシューティング

| 問題                      | 確認事項                                                       |
| ----------------------- | ---------------------------------------------------------- |
| Acuityから401が返される        | コロンを含む`USER_ID:API_KEY`をエンコードし、ヘッダー値の先頭を`Basic `とスペースにします。 |
| Acuityから403が返される        | ご利用のプランにはAPIアクセスが含まれていません。                                 |
| 時間が返されない                | 予約タイプIDと、その日付に予約可能な時間が設定されていることを確認します。                     |
| `not_available`で予約に失敗する | その時間はすでに予約済みか、予約可能ではありません。予約前に空き時間を再確認するよう受付担当に伝えてください。    |
| フィールド不足で予約に失敗する         | アカウントで電話番号が必須になっている可能性があります。予約ツールで`phone`を必須にしてください。       |