滞在中の宿泊客から客室のQRコード経由で届くリクエストにチャットで答え、手配が要るものは部屋番号つきの依頼票にして部署へ回す
客室に置いたQRコードからチャットを開いてもらい、滞在中の宿泊客のリクエストにAIが答えます。案内で済むものはその場で答え、タオルの追加や備品の故障のように人の手配が要るものは、部屋番号つきの依頼票にして担当の部署へ回します。
- 生成AI
- ChatGPT/Claude/Gemini
- 対象業界
- 不動産/宿泊
- 対象部門
- カスタマーサポート
- 対象業務
- 分類・仕分け/問い合わせ対応
- 主な課題
- 人手が足りない/問い合わせが多い/期限・対応漏れが起きる
- AIで行う処理
- 対話
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 宿泊客が客室の内線電話でフロントを呼ぶ
- フロントの担当者が、到着の受付の合間に電話を取る。取れないときは、客は鳴らし直すか、あきらめる
- 部屋番号を画面の着信表示か口頭で確かめ、用件を聞き取る
- 案内で済むものは、館内案内の冊子を見ながら答える
- 手配が要るものは、メモ用紙に部屋番号と用件を書き、客室清掃または設備の担当へ電話か業務用チャットで伝える
- 担当が動いたかどうかは、担当から連絡が来るか、客から催促の電話が来るまで分からない
- 夜勤への引き継ぎで、終わっていない依頼をメモから口頭で伝える
- 【客】 客室に置いたQRコードをスマートフォンで読み、チャットを開く。初回だけ、姓とチェックアウト日を入れる
- 自動中継のプログラムが宿泊管理システムに問い合わせ、その客室が在室中で、姓とチェックアウト日が一致することを確かめる
- 自動一致すれば会話を開始する。部屋番号と滞在期間は、仕組みの側で会話に結び付ける
- 自動客の書き込みに、急病・火災・事故を示す言葉が無いかを先に規則で見る。あればAIを通さず、内線番号を表示してフロントへ知らせる
- 自動Claude API が館内案内をもとに答える。手配が要る用件なら、足りない情報(品目・数・時間)を聞き返す
- 自動用件が固まったら、Claude API が依頼票を作る道具(ツール)を呼ぶ。中継のプログラムが部屋番号を付けて、部署ごとの依頼票の一覧に登録する
- 自動登録の結果(依頼番号と到着の目安)を Claude API に返し、客に伝える
- 人客室清掃・設備の担当が業務用チャットで依頼票を受け、「受けた」「済んだ」を返す
- 人フロントは、引き継がれた会話(料金・苦情・延泊など)と、受けられないまま時間が過ぎた依頼票だけを見る
各工程の詳しい説明を読む
- 宿泊客が客室の内線電話でフロントを呼ぶ
- フロントの担当者が、到着の受付の合間に電話を取る。取れないときは、客は鳴らし直すか、あきらめる
- 部屋番号を画面の着信表示か口頭で確かめ、用件を聞き取る
- 案内で済むものは、館内案内の冊子を見ながら答える
- 手配が要るものは、メモ用紙に部屋番号と用件を書き、客室清掃または設備の担当へ電話か業務用チャットで伝える
- 担当が動いたかどうかは、担当から連絡が来るか、客から催促の電話が来るまで分からない
- 夜勤への引き継ぎで、終わっていない依頼をメモから口頭で伝える
(a)電話が取れない時間がある。 17時から22時はチェックインの受付と内線が重なり、フロントの前に客が並んでいるときに内線が鳴っても取れません。 鳴らし直してもつながらない客は、タオルをあきらめるか、ロビーまで降りてきます。不満は、チェックアウトの後の口コミで初めて分かります。
(b)取り次ぎの途中で抜ける。 メモ用紙に書いた依頼を、部署へ伝える前に次の電話を取る。伝えたつもりで伝わっていない。担当が「了解」と返したが、別の部屋と取り違えていた。どれも、依頼が人の記憶とメモ用紙の上にしか無いことから起きます。
(c)外国語の内線に時間がかかる。 英語の話せる担当者がいても、聞き取りに日本語の倍の時間がかかります。「バスタオル」か「バスローブ」かの取り違えは、届けてから分かります。
(d)案内の電話で回線がふさがる。 Wi-Fiのパスワードは冊子に書いてありますが、探すより電話が早いので客は電話をかけます。その1本が、故障を知らせたい客の電話を待たせます。
- 【客】 客室に置いたQRコードをスマートフォンで読み、チャットを開く。初回だけ、姓とチェックアウト日を入れる
- 【自動】 中継のプログラムが宿泊管理システムに問い合わせ、その客室が在室中で、姓とチェックアウト日が一致することを確かめる
- 【自動】 一致すれば会話を開始する。部屋番号と滞在期間は、仕組みの側で会話に結び付ける
- 【自動】 客の書き込みに、急病・火災・事故を示す言葉が無いかを先に規則で見る。あればAIを通さず、内線番号を表示してフロントへ知らせる
- 【自動】 Claude API が館内案内をもとに答える。手配が要る用件なら、足りない情報(品目・数・時間)を聞き返す
- 【自動】 用件が固まったら、Claude API が依頼票を作る道具(ツール)を呼ぶ。中継のプログラムが部屋番号を付けて、部署ごとの依頼票の一覧に登録する
- 【自動】 登録の結果(依頼番号と到着の目安)を Claude API に返し、客に伝える
- 【人】 客室清掃・設備の担当が業務用チャットで依頼票を受け、「受けた」「済んだ」を返す
- 【人】 フロントは、引き継がれた会話(料金・苦情・延泊など)と、受けられないまま時間が過ぎた依頼票だけを見る
8番目と9番目が、この設計の分かれ目です。 タオル2枚の依頼票は、人が中身を承認してから部署へ回すのではなく、そのまま部署へ届けます。 承認を挟むと、フロントの電話がチャットの承認に置き換わるだけで、150.0時間はほとんど減りません。代わりに、部署が受けたかどうかを仕組みが見張り、時間が過ぎたものだけをフロントに上げます。
4番目を規則で行うのも、意図してのことです。 急病や火災の気配をAIの判断だけに任せると、言い回しによって見落とします。言葉の一覧とAIの引き継ぎの道具で、二重の網にします。
02今回想定するシステム構成
客室のQRコード(客室ごとに異なる識別子) ▼【トリガー】客がチャットに書き込む チャットの画面(自社で用意するWebページ) ▼ 中継のプログラム(AWS Lambda) ├──▶ 宿泊管理システム:在室中か、姓とチェックアウト日が一致するか ├──▶ 緊急の言葉の判定(規則)── 該当すれば内線番号を表示し、フロントへ通知 ▼ Claude API ── 館内案内をもとに答える/足りない情報を聞き返す │ ツール:依頼票の作成/清掃の要否/依頼の状況確認/フロントへの引き継ぎ ▼ 中継のプログラム ── 部屋番号を付けて依頼票を登録し、結果を Claude API へ返す ▼ 部署ごとの依頼票の一覧 ├──▶ 客室清掃(業務用チャットへ通知) ├──▶ 設備(業務用チャットへ通知) └──▶ フロント(引き継ぎと、受けられないまま時間が過ぎたもの)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Claude API(客との対話、用件の聞き取り、ツールの呼び出し) | OpenAI API、Gemini API |
| 連携 | AWS Lambda(チャットの中継、本人の確認、ツールの実行) | 自社のWebサーバー上のプログラム |
| 通知 | Microsoft Teams(部署ごとのチャネルへの依頼票の投稿) | Slack、LINE WORKS |
| 保管 | Amazon DynamoDB(会話と依頼票の記録) | 自社のデータベース |
| 宿泊管理 | 既存の宿泊管理システム(在室の状態と滞在期間の参照) | 予約台帳の書き出し |
宿泊管理システムは、新しく足すものではありません。 在室の状態と姓・チェックアウト日を読むだけで、書き込みません。
AIとのつなぎは、Claude API のツール使用(tool use)です。 Claude のドキュメントでは、自分で定義した道具を渡すと、Claude が用件に応じてその道具を呼ぶかを判断し、呼ぶときは stop_reason: "tool_use" と、道具の名前と入力を書いた tool_use のブロックを返すとされています。実際に依頼票を登録するのは、こちらのプログラムです。 登録した結果を tool_result として返すと、Claude はそれを使って客への返事を続けます。
道具の入力は、厳格なツール使用(strict tool use)で形を固定します。 ツールの定義に strict: true を付けると、Claude のツールの入力がJSONスキーマに厳密に従い、道具の名前も渡したものの中から必ず選ばれるとされています。依頼票の品目を決まった値の中からしか選べないようにできるので、「バスタオル」と「フェイスタオル」と「タオル」が混ざりません。
ただし、スキーマで書けない制約があります。 構造化出力の対応範囲では、enum は使えますが、minimum・maximum のような数値の制約と、minLength・maxLength のような文字列の制約には対応していません。オブジェクトには additionalProperties: false を指定する必要があります。「1回に4枚まで」のような上限は、スキーマではなく enum で数を並べるか、中継のプログラムの側で確かめます。
03どうやって実装するのか
処理の起点を決める
客がチャットに書き込んだことを起点にします。 客室のQRコードには、客室ごとに異なる識別子を入れておきます。部屋番号そのものではなく、推測しにくい識別子にします。部屋番号をそのままURLに入れると、隣の部屋の番号に書き換えて開くことができてしまいます。
最初の書き込みの前に、本人の確認を1回だけ挟みます。 姓とチェックアウト日を入れてもらい、中継のプログラムが宿泊管理システムと照合します。一致すれば、その客室・その滞在に結び付いた会話を開始し、チェックアウト日の正午で自動的に閉じます。QRコードは客室に置いたままなので、前の客が写真に撮っておいたQRコードから、次の客の滞在中に依頼が届くことを、この照合で防ぎます。
定時の処理も1つだけ持ちます。 5分ごとに依頼票の一覧を見て、「受けた」が返らないまま決めた時間を過ぎたものを、フロントの業務用チャットへ上げます。客の催促より先に、仕組みが気づく形にします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 客の書き込み | チャットに書かれた文。言語は問わない | チャットの画面 |
| 滞在の情報 | 部屋番号、姓、チェックアウト日、予約時の言語、清掃の予定 | 宿泊管理システム、客室清掃の表 |
| 館内案内 | Wi-Fi、朝食、大浴場、チェックアウト、駐車場、近隣の店の一覧 | フロントが管理する案内の原稿 |
| 品目と標準時間の表 | 頼める品目、1回の上限、無料か有料か、部署ごとの標準の対応時間 | 客室清掃・設備・フロントで決めた表 |
| 依頼の状況 | 依頼番号ごとの「受付」「受けた」「済んだ」 | 依頼票の一覧 |
質を決めるのは、下の2つです。 館内案内に書いていないことは、AIが答えられません。そして答えられないときに、それらしく作って答えさせないために、案内の原稿を1か所にまとめて、そこに書いてあることだけを答える前提にします。
近隣の店は、ホテルが確かめた一覧だけを渡します。 一覧には「最後に確かめた日」を持たせ、一覧に無い店をAIが勧めないことを指示で縛ります。
品目と標準時間の表は、部署と一緒に作ります。 「バスタオルは1回に4枚まで無料、標準は20分」「加湿器は在庫があれば貸し出し、標準は30分」「エキストラベッドは有料でフロントの判断」。この表に無いものを、AIは依頼票にしません。
データの取得方法を決める
宿泊管理システムからは、本人の確認と滞在の情報だけを取ります。 照合に要るのは在室の状態、姓、チェックアウト日で、宿泊者の連絡先や支払いの情報は取りません。宿泊管理システムに外から問い合わせる口が無い場合は、在室中の客室の一覧を15分ごとに書き出してもらい、それと照合する形でも始められます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 在室の状態、姓、チェックアウト日 | 宿泊管理システム | 本人の確認と、会話を閉じる時刻 |
| 予約時の言語 | 宿泊管理システム | 最初のあいさつの言語 |
| その日の清掃の予定 | 客室清掃の表 | 「清掃不要」を受けられる締め時刻の判断 |
| 館内案内、品目と標準時間の表 | 案内の原稿 | Claude API へ毎回渡す |
| 依頼の状況 | 依頼票の一覧 | 「まだですか」への返事 |
館内案内と品目の表は、会話のたびに同じものを渡します。 毎回同じ前置きになるので、内容を変えたときにだけ差し替えます。原稿を直した日と、AIに渡した版の番号を、会話の記録に残します。
AIへ渡す前に整形する
- 本人の確認 … 姓とチェックアウト日を宿泊管理システムと照合する。3回続けて一致しなければ、チャットを止めて内線番号を案内する
- 緊急の言葉の判定 … 「火事」「煙」「倒れた」「救急」「血」「fire」「smoke」「ambulance」などの一覧に当たれば、AIを通さずに内線番号を表示し、フロントへ即時に知らせる
- 会話の長さの整理 … 同じ滞在の会話は、直近の20往復と、作成済みの依頼票の一覧だけを渡す。古いやり取りは渡さない
- 個人情報の除去 … 客がクレジットカードの番号や電話番号を書き込んだ場合は、AIへ渡す前に伏せ字にする
- 連続した書き込みのまとめ … 数秒のうちに続けて届いた書き込みは、1つにまとめてから渡す
- 締め時刻の付与 … その日の清掃の開始時刻と、「清掃不要」を受けられる締め時刻を、会話の前提として渡す
2番目をAIの前に置く理由は、第5章で述べたとおりです。 一覧に当たったときの表示は、言語ごとに固定の文面にします。AIの返事を待つ数秒も、緊急の場面では待たせません。
4番目も軽く見ないでください。 カードの番号ごと書き込む客は必ず出てきますが、番号そのものはAIにも記録にも要りません。
AIに処理させる
させるのは、案内で答えること、手配に要る情報を聞き返すこと、道具を正しく選んで呼ぶこと、の3つです。 道具は次の4つだけを渡します。
| 道具 | 呼ぶ場面 | 入力の例 |
|---|---|---|
create_request_ticket | 品目と数が固まった手配の依頼 | 部署、品目、数、希望の時間帯、客の補足 |
set_cleaning_preference | 清掃の要否と時間の希望 | 本日不要、時間をずらす、タオル交換のみ |
get_ticket_status | 「まだですか」への返事 | 依頼番号 |
handoff_to_front | AIが答えてはいけない用件 | 理由の区分、客の用件の要約 |
どの道具の入力にも、部屋番号の欄がありません。 部屋番号は、中継のプログラムが会話に結び付いた滞在の情報から付けます。AIが部屋番号を書く場面そのものを、設計から消しています。 客が「1203号室です」と書いても、依頼票は会話が結び付いた部屋に付きます。
| させないこと | 理由 |
|---|---|
| 到着時刻を約束する | 部署の状況を知らない。目安は道具が返した値だけを伝える |
| 料金や無料かどうかを判断する | 品目の表で決める。表に無いものはフロントへ |
| 延泊・部屋替え・支払いを受ける | 予約と会計の変更は人が行う |
| 苦情に謝罪や補償を申し出る | 対応の幅はホテルが決める。フロントへ引き継ぐ |
| 館内案内に無いことを答える | 分からないと答え、必要ならフロントへ |
| 体調や安全について助言する | 緊急の判定とフロントへの引き継ぎに回す |
1行目がいちばん起きやすい失敗です。 「すぐにお持ちします」は自然な返事で、何も言わなければAIはそう書きます。そして、20分後に届いたタオルは「すぐ」ではありません。 目安を言うのは道具の結果が返った後だけ、と指示に書きます。
聞き返しは、足りない項目があるときだけにします。 Claude のドキュメントでは、ツールの必須の項目を埋めるだけの情報が無いとき、Claude Opus は項目が足りないことに気づいて聞き返す可能性が高く、Claude Sonnet は聞き返すこともあれば、もっともらしい値を推測して埋めることもあるとされています。推測で埋められては困る項目(数・品目)は、指示の側でも「書かれていなければ聞き返す」と明記します。
指示内容を固定する
あなたは当ホテルのゲストサービスのチャット係です。
滞在中のお客様の依頼に、下の【館内案内】と【品目と標準時間の表】だけを使って対応します。
【答え方】
- お客様が書いた言語で答えてください。
- 館内案内に書かれていることは、そのまま答えてください。
- 館内案内に書かれていないことは「確認してご連絡します」とせず、
分からないと伝え、必要なら handoff_to_front を呼んでください。
- 近隣の店は【近隣の一覧】にある店だけを案内し、
「営業時間は変わっている場合があります」を添えてください。
【手配の依頼】
- 品目と数が分かったら create_request_ticket を呼んでください。
- 品目・数・希望の時間帯のどれかが書かれていなければ、推測せずに聞き返してください。
- 品目の表に無いもの、表の上限を超える数、有料と書かれた品目は、
依頼票にせず handoff_to_front を呼んでください。
- 部屋番号を尋ねたり、書き込まれた部屋番号を使ったりしないでください。
部屋は仕組みの側で決まっています。
【約束しないこと】
- 到着の時刻や所要時間は、道具の結果に含まれる eta_minutes だけを伝えてください。
道具を呼ぶ前に「すぐに」「まもなく」と書かないでください。
- 料金、無料かどうか、補償、割引について、表に無いことを答えないでください。
- 延泊、部屋替え、支払い、苦情、忘れ物、体調や安全に関わる相談は、
内容を短くまとめて handoff_to_front を呼び、フロントが対応することを伝えてください。
【清掃】
- 「今日は掃除はいらない」「あとで来てほしい」は set_cleaning_preference を呼んでください。
- 【本日の締め時刻】を過ぎている場合は、受けられないことを伝え、
handoff_to_front を呼んでください。
【道具が失敗したとき】
- 結果に is_error が含まれていたら、依頼が登録できていないことを正直に伝え、
内線番号 {front_extension} を案内してください。登録できたように書かないでください。
【館内案内】{guide_text}(版:{guide_version})
【品目と標準時間の表】{item_table}
【近隣の一覧】{nearby_list}(最終確認日:{nearby_checked})
【本日の締め時刻】{cleaning_cutoff}
【この滞在で作成済みの依頼】{open_tickets}
「道具を呼ぶ前に『すぐに』と書かない」を明記しないと、ほぼ必ず書きます。 依頼を受けた直後の返事として、それがいちばん自然だからです。禁じるのは言い回しではなく、根拠の無い約束です。
「登録できたように書かない」も同じ理由で入れています。 Claude のドキュメントでは、道具の実行が失敗したときに is_error: true を付けて返すと、Claude はその失敗を客への返事に織り込むとされています。指示でも念を押し、登録できなかった依頼を「承りました」で終わらせません。
出力形式を固定する
依頼票の道具は、次の入力スキーマで定義します。 strict: true を付け、すべてのオブジェクトに additionalProperties: false を付けます。
{
"name": "create_request_ticket",
"strict": true,
"input_schema": {
"type": "object",
"properties": {
"department": { "type": "string", "enum": ["housekeeping", "engineering"] },
"item": { "type": "string",
"enum": ["bath_towel", "face_towel", "bath_mat", "toothbrush", "pillow",
"blanket", "humidifier", "aircon_issue", "tv_issue",
"water_issue", "light_issue", "other_issue"] },
"quantity": { "type": "integer", "enum": [1, 2, 3, 4] },
"time_window": { "type": "string", "enum": ["asap", "within_1h", "after_return"] },
"guest_note": { "type": "string" },
"guest_language": { "type": "string" }
},
"required": ["department", "item", "quantity", "time_window", "guest_note", "guest_language"],
"additionalProperties": false
}
}
数を enum で1から4に限っているのは、maximum が使えないためです。 5枚以上の依頼は、この道具では書けません。指示のとおり handoff_to_front に回ります。
中継のプログラムは、登録した結果を次の形で返します。
{
"ticket_id": "HK-1001-0347",
"status": "accepted",
"eta_minutes": 20,
"room": "(会話に結び付いた部屋番号。AIへは返さない)"
}
room を返さないのは、AIに部屋番号を書かせないためです。 客への返事に部屋番号は要りません。eta_minutes は品目の表の標準時間と、その部署の未処理の件数から中継のプログラムが決めます。
JSONで受け取る理由は3つです。 1つ目は、依頼票の項目が部署の一覧の列とそのまま合うこと。2つ目は、品目が決まった値なので、月ごとに「何が多いか」を数えられること。3つ目は、AIが答えた文と、仕組みが決めた値が分かれて残ることで、後から「誰が約束したのか」を確かめられます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| チャットの画面 | 中継のプログラムとの通信 | 客の書き込みとAIの返事のやり取り |
| 宿泊管理システム | 参照のみ | 本人の確認、滞在期間、言語 |
| Claude API | API呼び出し | 対話とツールの呼び出し |
| 依頼票の一覧 | 中継のプログラムが書き込む | 部屋番号を付けた依頼票の登録と状況の更新 |
| 業務用チャット | 部署ごとのチャネルへの投稿 | 依頼票の通知と、「受けた」「済んだ」の返信 |
| フロント | 業務用チャットと一覧の画面 | 引き継ぎと、時間が過ぎた依頼の確認 |
依頼票の一覧に書き込むのは、中継のプログラムだけです。 AIは道具を「呼ぶ」だけで、一覧には直接触れません。部屋番号の付与、上限の確認、重複の確認を、すべて書き込む前の1か所で行えます。
部署の返信は、業務用チャットのボタンか決まった返信で受けます。 「受けた」「済んだ」の2つだけです。客が「まだですか」と書いたときに get_ticket_status が返すのは、この返信の状態です。
人が確認する
依頼票は、人の承認を挟まずに部署へ届けます。 タオルや清掃の要否は、取り違えても次の依頼で直せる用件で、承認を挟むと遅れのほうが大きくなります。人が見るのは、次の3つだけです。
handoff_to_frontで引き継がれた会話 … 料金・延泊・苦情・忘れ物・体調の相談。フロントがチャットで続きを引き取るか、内線をかける- 受けられないまま時間が過ぎた依頼票 … 標準時間の半分を過ぎても「受けた」が無いもの。部署へ電話で確かめる
- 緊急の言葉に当たった会話 … 判定が空振りでも、必ずフロントが客室へ連絡する
2番目を仕組みに見張らせるのが、この構成の要です。 依頼票が部署へ届いたことと、部署が動いたことは別です。「受けた」の返信が無いものを拾えば、第3章の(b)の抜けがここで止まります。
最初の1か月は、全部の会話をフロントが翌朝に読み返します。 AIが約束をしていないか、表に無いものを依頼票にしていないか、引き継ぐべき用件を自分で答えていないかを見ます。読み返す件数は、2か月目から1割の抜き取りに減らします。
例外に対処する
| 起きること | 対応 |
|---|---|
| 本人の確認で一致しない | 3回で止め、内線番号を案内する。照合の失敗は、チェックイン直後の登録の遅れも疑う |
| チェックアウト日を過ぎた会話 | 自動的に閉じる。延泊の客は、フロントが延泊を登録した時点で開き直す |
| 品目の表に無い依頼 | 依頼票にせず handoff_to_front。多い品目は表に足す候補として記録する |
| 上限を超える数 | スキーマで書けないため、引き継ぎに回る |
| 依頼票の登録に失敗した | is_error: true で返し、客に内線番号を案内する。登録できたように返さない |
| 同じ依頼が続けて届く | 同じ部屋・品目で受付中のものがあれば、新しく作らずに既存の依頼番号を返す |
| 清掃の締め時刻を過ぎた「清掃不要」 | 受けられないことを伝え、フロントへ引き継ぐ |
| AIが応答しない | 定型の文面で内線番号を表示する。チャットだけが窓口にならないようにする |
| 客が他の部屋や他の客のことを尋ねる | 道具がその情報を持たないため答えられない。必要ならフロントへ |
上から5行目が、いちばん客の信頼にひびきます。 登録できなかった依頼を「承りました」と返すと、客は待ち続けます。失敗をそのまま伝えて内線に戻すほうが、結果として早く届きます。
記録を残す
- 会話の全文(客の書き込みは伏せ字にした後のもの)と、言語、開始と終了の時刻
- AIが呼んだ道具の名前と入力、中継のプログラムが返した結果(
ticket_id、eta_minutes) - 依頼票ごとの「受付」「受けた」「済んだ」の時刻と、受けた担当
handoff_to_frontの理由の区分と、フロントが引き取った時刻- 緊急の言葉の判定に当たった記録と、フロントが客室へ連絡した時刻
- そのとき渡した館内案内と品目の表の版
- 本人の確認の失敗の記録
版を残すのは、案内の原稿が変わるためです。 朝食の時間を変えた週に「6時半から」と答えた記録があったとき、それがAIの誤りか、古い原稿のせいかを、版で切り分けます。
会話の記録は、決めた期間を過ぎたら消します。 品目ごとの件数と対応時間だけを、月ごとの集計として残します。
04実装レベルの3段階
最小構成は、フロントが客の役をして確かめる段階です。 半自動化で、1件6分が2分程度になります。 案内は閉じ、手配は依頼票で部署に届きますが、済んだかどうかの確認と、時間が過ぎたものの追いかけはフロントに残ります。 この段階が本記事の想定です。本格構成では、部署の返信を状況として客に返せるようになり、「まだですか」の問い合わせもチャットの中で閉じます。 段階を飛ばさないでください。 半自動化を1か月回すと、表に無くて引き継ぎに回った品目と、時間が過ぎやすい時間帯が先に分かります。そこを直してから本格構成に進みます。
05工数削減シミュレーション
導入後 1,500件 × 2分 ÷ 60 = 50 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 客室が100室以上あり、滞在中の宿泊客からの内線電話が夕方から夜に集中するシティホテル・ビジネスホテル・リゾートホテル。タオルやアメニティの追加、清掃の要否、備品の不具合、館内と近隣の案内が問い合わせの大半を占め、フロントが電話を受けて客室清掃や設備の担当へ取り次いでいる場合。訪日客が多く、英語や中国語での内線のやり取りに時間がかかっている場合。宿泊管理システムから在室中の客室と滞在期間を引ける場合。
- 客室が数十室以下で、内線電話の件数がフロントの手で足りる場合。宿泊客の多くが高齢で、スマートフォンでのチャットより電話を選ぶ見込みの場合。依頼を受ける側(客室清掃・設備)の部署に、依頼票を見て受けたことを返す端末や手順が無い場合(先にそこを整える必要があります)。なお、急病・火災・事故の通報や、料金・苦情への対応は、この構成では代替できません。
07最小構成で試す方法
- 先月の内線電話で多かった用件を、フロントの記憶とメモ用紙から50件書き出す(うち数件は、料金や苦情など人が答えるべきものを入れる)
- 館内案内の原稿と、品目と標準時間の表を1枚にまとめる
- 手元のAIサービスの画面に、原稿と表を貼り、第7章の指示を短くしたものを与える
- 50件を客になったつもりで1件ずつ書き込み、AIの返事を見る
- 「答えてよいものに答えたか」「聞き返すべきところで聞き返したか」「約束していないか」「引き継ぐべきものを引き継いだか」を、フロントの担当者が○×で付ける
50件は必ずやってください。 チャットの画面や中継のプログラムを作る前に、館内案内の原稿で答えきれるのかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 案内と聞き返しがほぼ正しく、約束もしない | ツールの定義と中継のプログラムに進む |
| 「すぐお持ちします」と約束する | 指示の書き方で直る。構成は有効 |
| 案内に無いことを答えようとする | 原稿が足りない。 AIより先に案内の原稿を直す |
3行目が出ることは珍しくありません。 「よく聞かれること」がフロントの頭の中にしか無かったということです。答えられなかった用件を原稿に書き足し、同じ50件でもう一度試してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| AIが「すぐにお持ちします」と約束する | 目安は道具の結果の eta_minutes だけ。 指示に明記する |
| 客が書いた部屋番号で依頼票ができる | 入力スキーマに部屋番号の欄を置かない。 会話に結び付けた部屋で付ける |
| 前の客のQRコードの写真から依頼が届く | 姓とチェックアウト日で照合し、チェックアウトで会話を閉じる |
| 緊急の書き込みをAIが普通の依頼として扱う | 言葉の一覧で先に判定する。 AIの判断だけに任せない |
| 数の上限をスキーマで書けない | minimum・maximum は使えない。enum で数を並べる |
| 品目の名前が揺れる | enum で品目を固定し、strict: true を付ける |
| 登録に失敗したのに「承りました」と返す | is_error: true で返し、指示でも念を押す |
| 近隣の店の営業時間が古い | 一覧に最終確認日を持たせ、返事に注意書きを添える |
| 館内案内に無いことをそれらしく答える | 原稿に無いことは答えないと指示し、原稿のほうを直す |
| 部署が依頼票を見ていない | 「受けた」の返信が無いものを見張り、フロントへ上げる |
| 料金のかかる依頼を無料で受ける | 品目の表に有料と書き、表の上で有料のものは引き継ぎに回す |
| 同じ依頼が二重に届く | 同じ部屋・品目の受付中のものがあれば既存の番号を返す |
上の2行が、この構成の失敗のほとんどです。 どちらも、AIに書かせる項目を減らすことで防ぎます。
緊急の判定は、最初から置いてください。 月に1件あるかないかの用件ですが、見落としたときの重さは、他の削減では埋まりません。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 宿泊客の姓、部屋番号、滞在期間、言語、チャットに書かれた依頼の中身です。客がカード番号や電話番号、体調のことを書き込むこともあります。
- AIに渡す範囲を、会話に要るものまでに限る … 部屋番号は道具の結果からも外します。宿泊者の連絡先や支払いの情報は、そもそも取りません
- 急病・火災・事故をAIに任せない … 言葉の一覧で先に判定し、内線番号を表示してフロントへ知らせます。AIの返事は、緊急の対応の代わりになりません
- 約束と判断は人と表の側に置く … 到着の時刻、料金、補償は、AIが自分の言葉で言わないように指示とスキーマで縛ります。客に伝えた約束は、ホテルの約束になります
- 客の書き込みは、信頼できない入力として扱う … Claude のドキュメントは、外部から入ってくる内容に指示を埋め込んで Claude の動きを変えようとする攻撃(間接的なプロンプトインジェクション)に注意を促しています。AIが持つ道具を、その部屋の依頼に限ることが、いちばん確かな守りです
- 伏せ字は、AIに渡す前と記録する前の両方で行う … カード番号は会話に要りません。記録に残してしまうと、その記録の扱いそのものが重くなります
- 会話の保存期間を決める … 滞在が終わった会話をいつまで持つかを決め、過ぎたら消します。集計に要るのは品目と件数と時間だけです
誤りが起きた場合のリスクは、依頼が届かずに客を待たせることと、ホテルが決めていないことをAIが約束することの2つです。 前者は部署の「受けた」を見張ることで、後者はAIに書かせる項目を減らすことで防ぎます。
10まず何から始めるか
1週目:館内案内の原稿と品目の表を作る
客室の冊子とフロントの手元のメモを1つの原稿にまとめます。よく聞かれる順に、1項目を2〜3行で書きます。 客室清掃・設備の担当と、品目、1回の上限、無料か有料か、標準の対応時間を決めた表を作ります。
2週目:50件で試す
先月の内線電話の用件を50件書き出し、手元のAIサービスに原稿と表を貼って試します。約束をしていないか、引き継ぐべきものを答えていないかを最優先で見ます。
3週目:部署の受け方を決める
客室清掃と設備の担当が「受けた」「済んだ」を返す手順と、夜勤の時間帯に誰が見るのかを決めます。あわせて、緊急の言葉の一覧と固定の文面を言語ごとに作ります。
4週目:1フロアで動かす
QRコードを1フロアの客室だけに置き、本人の確認、道具の呼び出し、依頼票の配信までを動かします。この時点では、全部の会話をフロントが翌朝に読み返します。
2か月目: 全館に広げ、時間が過ぎた依頼の見張りを足します。引き継ぎに回った用件と、表に無かった品目を毎週数えます。3か月目以降: 部署の返信を状況として客に返す機能を足し、1件6分が何分になったかを実測します。17時から22時の内線の本数が、導入前と比べてどれだけ減ったかを数えられた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
自分で定義した道具を渡すと Claude が呼ぶかを判断し、呼ぶときは stop_reason: "tool_use" と tool_use のブロックを返すこと。道具の実行はアプリケーション側で行い、結果を tool_result で返すこと。必須の項目が足りないとき、Claude Opus は聞き返す可能性が高く、Claude Sonnet は推測で埋めることもあること。道具の名前・説明・スキーマが入力のトークンに数えられること | Claude: Tool use with Claude | 2026-10-01 |
ツールの定義に strict: true を付けると、入力がスキーマに厳密に従い、道具の名前が必ず有効なものになること | Claude: Strict tool use | 2026-10-01 |
道具の実行が失敗したときは is_error: true を付けて返し、Claude がそれを返事に織り込むこと。外部から入る内容を信頼できない入力として扱い、間接的なプロンプトインジェクションに注意すること | Claude: Handle tool calls | 2026-10-01 |
enum が使えること。minimum・maximum などの数値の制約と、minLength・maxLength などの文字列の制約に対応しないこと。オブジェクトに additionalProperties: false が必要なこと | Claude: Structured outputs | 2026-10-01 |
緊急時の連絡の手順と、どの依頼を無料で受けるかは、自社の運用と防災の計画に沿って決めてください。 本記事は上記の公開情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0408)についてのご相談はこちらから。
