- 営業チームが、承認済みの提案書やRFPへの回答を厳選します。
- アプリケーションがHubs APIを使用してSales Hubをセットアップし、そのコンテンツにインデックスを作成して、HubポータルをCRMに埋め込みます。
- 営業担当者はBox AIを使用して自然言語でHubにクエリを実行し、権限が管理された承認済みコンテンツに基づく正確な回答を得ることができます。
構築する内容
このチュートリアルの最後には、次の機能を備えた実用的な統合ソリューションが完成します。- Box Hubs APIを使用して、Sales Hubをプログラムからプロビジョニングする。
- 承認済みRFPコンテンツを含む厳選されたフォルダをHubに追加する。
- HubのAIチャットインターフェースをCRMに埋め込む。
- Box AIを使用してHubに対してクエリを実行し、承認済みのコンテンツに基づいて営業に関する質問に回答する。
前提条件
始める前に、以下が揃っていることを確認してください。- で、Box Hubsが有効になっていること。c2>Box Hubsの構成</c2>を参照してください。
- Boxアプリケーションで、クライアント資格情報許可認証が構成され、[ユーザーアクセストークンを生成する] が有効になっていること。
- Python 3.11以上。
- アプリで以下のスコープが有効になっていること。
- Boxに格納されているすべてのファイルとフォルダの読み取り
- Boxに格納されているすべてのファイルとフォルダへの書き込み
- AIを管理する
- BoxユーザーID (管理コンソールの [ユーザー] で確認できます)。
手順
このソリューションでは、以下に示す3つのBox Platform機能を組み合わせます。| コンポーネント | 目的 | API |
|---|---|---|
| Hub | 厳選されたコンテンツにインデックスを作成し、検索可能で権限が継承されたポータルに集約する | POST /2.0/hubs |
| Hubの項目 | フォルダやファイルをHubに追加する | POST /2.0/hubs/:id/manage_items |
| Box AI | Hubコンテンツに基づいて、自然言語の質問に回答する | POST /2.0/ai/ask |
Box Hubsは、基になるソースファイルの権限を継承します。営業担当者には、Box内で既にアクセス権限を持つコンテンツから派生した回答のみが表示されます。別途、アクセス制御レイヤーを用意する必要はありません。
BoxでのRFPコンテンツの整理
統合を構築する前に、承認済みの営業コンテンツを整理しておきます。フォルダ構造が整理されていると、Box AIの回答品質とコンテンツガバナンスの両方が改善されます。Box内に以下のようなフォルダ構造を作成するか、ご自身のBoxアカウントにこの共有フォルダをコピーします。このフォルダには、以下に示す各サブフォルダ用のサンプルファイルが含まれています。最上位の
Sales Contentフォルダおよび各サブフォルダのフォルダIDをメモしておいてください。これらは、Hubに項目を追加する際に使用します。開発環境のセットアップ
- ターミナルを開き、新しいプロジェクトディレクトリを作成します。
- Pythonの仮想環境を作成してアクティブ化します。
(.venv)と表示されます。これにより、仮想環境内で作業していることがわかります。新しいターミナルウィンドウやタブを開くたびに、プロジェクトディレクトリから
source .venv/bin/activateを実行して、仮想環境を再アクティブ化する必要があります。コマンドの実行中にModuleNotFoundErrorが表示される場合、通常、venvがアクティブ化されていないことを意味します。- 必要なパッケージをインストールします。
- 資格情報を保存するための
.envファイルを作成し、以下の内容を追加します。プレースホルダの値を、Box開発者コンソールで確認した実際の資格情報で置き換えます。
環境変数の理解:
.envファイルには機密情報 (実際の資格情報) が保存されています。Pythonコードは、os.getenv("VARIABLE_NAME")を使用してこれらの名前を参照することで、その値を読み取ります。たとえばos.getenv("BOX_CLIENT_ID")を実行すると、.envファイル内のBOX_CLIENT_ID=の隣に保存されている値を検索します。以下の手順でコードをコピーする際は、引用符で囲まれた変数名をそのまま正確に保持してください。実際の資格情報に置き換えないでください。Boxクライアントの認証
プロジェクトディレクトリに
box_client.pyという名前の新しいファイルを作成します。そのファイルを開き、以下のコードを貼り付けます。このチュートリアルでは (
enterprise_idではなく) user_idを使用して、特定のBoxユーザーとして認証を受けます。これにより、クライアントはそのユーザーが持つ権限を使用して動作し、そのユーザーが招待されているコンテンツにアクセスできるようになります。ユーザーIDは、管理コンソールの [ユーザー] で確認するか、Boxウェブアプリで自分のアバターをクリックしてURLを確認してください。Sales Hubのプロビジョニング
create_hub.pyという名前のファイルを作成します。このスクリプトにより、新しいHubが作成され、その中に営業コンテンツのフォルダが配置されます。最上位フォルダを追加すると、そのフォルダ内のすべてのファイル (サブフォルダ内のファイルも含む) に自動的にインデックスが作成されます。Box内のそれらのフォルダに新しいファイルが追加されると、Hubのコンテンツも自動的に更新されます。
Hubへのアクセス管理
コラボレーションを追加することで、Sales Hubにアクセスできるユーザーを管理します。これにより、適切なユーザーのみがコンテンツにクエリを実行できることを確認できます。
manage_access.pyという名前のファイルを作成します。Box AIを使用したHubへのクエリ実行
この統合の最大の強みは、営業担当者が厳選されたコンテンツに対して自然言語で質問できる点にあります。以下を実行します。Box AIは、インデックスが作成されたHubコンテンツを検索し、承認済みの資料に基づいて回答を返します。HubはBoxの権限を引き継いでいるため、AIはクエリを実行したユーザーがアクセス権限を持つドキュメントのみを参照します。この時点でプロジェクトディレクトリには、以下のファイルが含まれていることになります。
query_hub.pyという名前のファイルを作成します。統合のテスト
本番環境に移行する前に、各コンポーネントが正しく動作することを確認してください。1. 認証を確認します。資格情報が有効であることを簡単に確認します。Boxのユーザー名とメールアドレスが表示されます。次のように表示されます。出力からHub IDをコピーします。質問に続き、営業コンテンツから抽出された回答が表示されます。回答が空であったり、汎用的な内容であったりする場合は、以下の点を確認してください。
コマンドを実行する前に、
sales-rfp-hubディレクトリを開いていること、また、仮想環境がアクティブ化されていることを確認します。invalid_clientと表示されている場合は、.envの資格情報を確認してください。2. Hubを作成し、コンテンツを追加します。query_hub.pyとmanage_access.pyを開き、YOUR_HUB_IDをこの値に置き換えます。3. Hubにクエリを実行します。- Hub IDが正しいこと。
- コンテンツフォルダに、サブフォルダだけでなくドキュメントも含まれていること。
- インデックス作成が完了するまで十分な時間が経過していること。
トラブルシューティング
ModuleNotFoundError: 「...」という名前のモジュールが見つからない
ModuleNotFoundError: 「...」という名前のモジュールが見つからない
仮想環境がアクティブ化されていません。
pythonコマンドを実行する前に、プロジェクトディレクトリからsource .venv/bin/activateを実行してください。新しく開いたターミナルタブは、すべて個別にアクティブ化する必要があります。invalid_client: クライアント資格情報が無効である
invalid_client: クライアント資格情報が無効である
以下のように、
.envファイルを確認します。BOX_CLIENT_IDおよびBOX_CLIENT_SECRETが、開発者コンソール > [Platformアプリ] > [アプリ] > [構成] の値と一致していることを確認します。BOX_USER_IDが有効なBoxユーザーID (数字で構成され、管理コンソールの [ユーザー] で確認可能) であることを確認します。- 開発者コンソールでアプリが承認されていることを確認します。
- アプリの種類がクライアント資格情報許可であり、[ユーザーアクセストークンを生成] が有効になっていることを確認します。
403 Forbiddenエラーまたは「access_denied_insufficient_permissions」
403 Forbiddenエラーまたは「access_denied_insufficient_permissions」
認証されたユーザーに、必要なスコープまたは権限がありません。
- アプリで、[すべてのファイルとフォルダの読み取り] スコープと [すべてのファイルとフォルダへの書き込み] スコープが有効になっていることを確認します。
- [AIを管理する] スコープが有効になっていることを確認します (Box AIクエリを利用するには必須)。
- サービスアカウントを使用してる場合は、そのアカウントがコンテンツフォルダにコラボレータとして招待されていることを確認します。
Hubの作成または項目の追加時に、404 Not Foundエラーが発生する
Hubの作成または項目の追加時に、404 Not Foundエラーが発生する
フォルダIDが正しくないか、認証されたユーザーにそのフォルダへのアクセス権限がありません。以下の点を確認してください。
.envファイル内のフォルダIDが、BoxのURLと一致している (https://app.box.com/folder/123456789であれば、フォルダIDは123456789となります)。BOX_USER_IDで指定されたユーザーは、そのフォルダに対してビューアー以上の権限を持っている。
Box AIが空の回答や無関係な回答を返す
Box AIが空の回答や無関係な回答を返す
これは通常、Hubコンテンツでインデックス作成が完了していないか、そのコンテンツが質問に適合していないことを意味します。
- コンテンツを追加してから、クエリを実行するまで数分待ちます。インデックス作成はすぐには完了しません。
- Boxウェブアプリで [Hubs] を確認し、Hub内に空のフォルダではなく、ファイルが含まれていることを確認します。
- ドキュメントにテキストが含まれていることを確認します (OCR処理されていないスキャン画像のPDFでは検索できません)。
- そのHubに存在することがわかっているコンテンツに直接関連する質問をしてみます。
BoxウェブアプリにHubが表示されない
BoxウェブアプリにHubが表示されない
Hubは正常に作成されているようなのに、現在のユーザーがコラボレータとしてアクセスできない場合は、
manage_access.pyを実行して自身を追加するか、Hubの所有者を確認してください。または、Box管理者に確認し、企業でBox Hubsが有効になっていることを確認してください。CRMへのHubの埋め込み
HubのAIチャットインターフェースをCRM (Salesforce、HubSpot、または社内のカスタムツールなど) に直接埋め込むことで、営業担当者はHubのコンテンツを活用した専用のチャットボット機能を利用できるようになります。Boxでは、HubのAIチャットについて、チャットボタンとチャットウィジェットという2つの埋め込みモードをサポートしています。 埋め込みパラメータとオプションの詳細なリストについては、を参照してください。埋め込みHubにアクセスするユーザーは、既存のBoxセッションを通じて認証を行います。既にBoxにサインインしている場合 (SSOを導入している企業では一般的なケースです)、追加のログインプロンプトが表示されることなく、チャットがシームレスに読み込まれます。ユーザーは、Hubに対するビューアー以上の権限が必要です。
本番環境へのスケーリング
複数のチームに対するHubのプロビジョニングの自動化
複数のチームに対するHubのプロビジョニングの自動化
地域、業種、または製品ラインごとに別々の営業チームがある場合は、それぞれに専用のHubをプロビジョニングできます。まず、
create_hub.pyのcreate_sales_hubを更新し、ハードコートされた値ではなくオプションのtitleパラメータを受け入れるようにします。次に、各チームに対してループ処理を行います。対話型RFPアシスタントの構築
対話型RFPアシスタントの構築
POST /2.0/ai/askエンドポイントは、以前のQ&Aのやり取りを格納したdialogue_historyパラメータを受け付けます。やり取りのリストを管理し、リクエストごとにそれを渡すことにより、担当者はコンテキストを失うことなく、「データ保管場所について詳しく説明してもらえますか?」といったフォローアップの質問を行うことができます。query_hub.pyに以下を追加するか、同じimportとクライアント設定を含む新しいスクリプトを作成します。利用状況の追跡と効果の測定
利用状況の追跡と効果の測定
を使用して、Hubへのクエリ頻度や、最も頻繁にアクセスされるコンテンツを監視します。このデータは、営業部門がコンテンツの選定に優先順位を付けたり、回答集のROIを測定したりするのに役立ちます。
コンテンツガバナンスの適用
コンテンツガバナンスの適用
Hubとを組み合わせて、古くなった営業資料を自動的にアーカイブまたは削除します。を使用して、コンテンツにレビューの日付や所有者をタグ付けします。
次の手順
請求書の取り込み自動化
Box AI Extractとメタデータを活用して、買掛金処理を自動化します。
Box Hubs APIリファレンス
高度なHub管理については、詳細なHubs APIガイドを参照してください。
