ファイルとフォルダを使ったスクリプト

Studioスクリプト内でファイルを操作できます。 ファイルはCXone Mpowerシステム上に存在している必要があります。 「ファイルACDの参照」ページのCXone Mpowerでファイルを表示できます。 このページからファイルをアップロードおよびダウンロードできます。 また、 を使用してファイルをDesktop Studioアップロードおよびダウンロードすることもできます。

CXone Mpowerシステム 内のファイルを探索できるアクションがあります:

  • WritefileWritefile:データをCXone Mpowerのファイルに保存します。
  • ReadfileReadfile:ファイルからデータを読み取ります。
  • FilesizeFilesize:ファイルのサイズをバイト単位で決定します。
  • FileinfoFileinfo:ファイルの場所や変更されているかどうかなど、ファイルに関する情報を取得します。
  • FileexistFileexist:特定のファイルが存在するかどうかを判断します。
  • DeleteDeleteCXone Mpowerからファイルを削除します。

EメールまたはFTP/SFTP経由でファイルを送信できるアクションがあります。

  • EMAILEMAIL:ファイルを添付したEメールを送信します。
  • EMAILEMAIL(デジタルスクリプト):ファイルを添付したEメールを送信します。
  • AttachAttach:生成されたEメールにファイルを添付します。
  • SendfileSendfile:FTPまたはSFTP経由でファイルを送信します。

インタラクションで事前に録音されたオーディオファイルまたはプロンプトを使用できるアクションがあります。

  • MENU :コンタクトにプロンプトまたは事前録音されたオーディオファイルを再生し、コンタクトがから選択できるオプションのメニューを作成します。
  • Play :カスタムオーディオWAVファイルまたは テキスト読み上げ(TTSクローズ済 ユーザーが録音プロンプトをテキストとして入力し、コンピューターで生成された音声を使用してその内容を読み上げる機能。)プロンプトを再生します。 ファイルを使用している場合は、ファイル全体が再生されます。 音声はコンタクトにしか聞こえません。
  • Playlog :コンタクトにしか聞こえないカスタムオーディオWAVファイルを再生します。 特定の開始点と停止点を選択できます。 Musicなど他のアクションに格納されている音楽ファイルは再生できません。
  • Reqagent: エージェントのみに聞くカスタムオーディオWAVファイルまたは テキスト読み上げ(TTS)プロンプトを再生します。 エージェントとコンタクトがリンクする前にプロンプトが再生されるため、プロンプトによってコンタクトが沈黙になることはありません。
  • Whisper :カスタムWAVファイルまたは テキスト読み上げプロンプトを再生します。 コンタクトのみ、エージェントのみ、または両方に聞こえるように設定できます。 プロンプトはエージェントとコンタクトがリンクした後に再生されるため、エージェントまたはコンタクトのみにアクションが再生された場合、相手にはプロンプトの間、沈黙が聞こえます。

最後のアクションは、2 つの WAV ファイルを連結できる CONCATWAV アクション です。

ファイルパス

スクリプト内でファイルパスを参照する必要がある場合は、使用しているアクションのヘルプページをご確認ください。 一部のアクションでは絶対パスが使用されます。 その他は相対パスが必要です。 ヘルプページに指定されておらず、ある種類のパスがスクリプトで機能しない場合は、他の種類を試してください。 絶対パスと相対パスの違いは次のとおりです。

  • 絶対パス: 常にルート フォルダーから始まります。 参照するファイルまたはスクリプトに対するスクリプト ファイルの相対的な位置は関係ありません。 チルダとバックスラッシュ (~\) を使用して、ルート フォルダーを示します。 たとえば、「~\フォルダー\file.wav」のように入力します。
  • 相対パス: スクリプト ファイルの場所から始まり、スクリプト ファイルを基準とした参照先のファイルの場所を記述します。 ファイルがスクリプトと同じフォルダー内のサブフォルダーにある場合は、スクリプトの場所をルートとして扱い、パスにサブフォルダー名を含めます。 たとえば、スクリプトが \フォルダー にあり、file.wav が \フォルダー\Subfolder1 にある場合、パスは \Subfolder1\file.wav のように記述します。 ファイルがスクリプトのフォルダ外にある場合、または相対パスが機能しない場合は、代わりに絶対パスを使用します。

では、相対パスもサポートされている場合でも、可能な場合は絶対パスを使用することがベストプラクティスStudioです。 これは、別のフォルダーにあるファイルを参照する場合に特に重要です。 このベスト プラクティスは、開発ワークフロー ステージで作業するときだけでなく、スクリプト内のファイルを参照するときにも常に適用されます。

スクリプトでのファイルパス管理

Studio 内のスクリプトが単独で存在することはほとんどありません。 通常、再利用とカスタマイズをサポートするために、複数のフォルダーに整理されます。 音声プロンプトや ASRクローズ済 自動音声認識(ASR)。 コンタクトが音声で話すか、電話のキーを押すか、またはその両方でプロンプトに応答できるようにする機能。 文法ファイルなど、スクリプトで使用されるその他のファイルは、別のフォルダーに配置されます。 会社で Studio開発ワークフロー ステージ を使用している場合は、制御されたプロモーションを可能にするステージ関連のフォルダーも存在します。 スクリプトは、異なるフォルダーにある他のスクリプトを頻繁に参照するため、スクリプトを正常に作成するにはパス管理が必要です。

ファイル パス内の変数置換を使用すると、スクリプト内のパスを一貫した信頼性の高い方法で管理できます。 これにより、スクリプト エコシステム全体で、他のスクリプト、音声プロンプト、ASR 文法、その他のファイルへの参照がより正確になります。

パス管理により、スクリプトはフォルダー境界を越えて他のスクリプトを見つけて実行したり、他のファイルを使用したりできます。 ファイル パスに変数置換を使用すると、少数の場所でパスを定義できます。 フォルダーまたはファイルが変更された場合は、ファイルへの参照をすべて探す必要はなく、 1 か所でパスを更新するだけで済みます。

ファイルパスの変数置換

ファイル パスの変数置換を使用すると、次のものを定義できます。

  • スクリプトまたはスクリプト内で参照するファイルを保持するフォルダーへの絶対パス。 他のフォルダーにあるスクリプトまたはファイルを参照する場合は、絶対パスを使用する必要があります。

  • スクリプトが昇格されたときに自動的に更新されるパス。 このオプションは、会社が Studio 開発ワークフロー ステージを使用している場合にのみ適用されます。

  • 単一の場所または少数の場所にあるフォルダーとファイルへのパス。 これにより、変数が作成された場所がわかるため、パスを更新する必要がある場合に簡単になります。

プロンプト、文法、ボイスメール、その他のスクリプトなど、参照する各タイプのファイルへのパスを保持する変数を作成できます。 スクリプトがフォルダーにファイルを保存したり、フォルダーからファイルを読み取ったりする場合は、それらのパスにも変数を使用できます。

ファイルを参照する必要がある場合は、パスの代わりに変数を使用します。 たとえば、プロンプトファイルへのパスの変数を作成し、プロンプトを指定するときにactionクローズ済 Studioスクリプト内で実行される処理で、顧客データの収集や音楽の再生などを行う。プロパティで使用します。 {promptPath}Greeting.wav のようになります。

パス変数の更新を自動化するには、SNIPPET アクションを使用してコードを記述し、スクリプトがどの開発段階フォルダーにあるかを判断し、それに応じてパスを更新します。 このヘルプページの残りの部分では、スクリプトのモデルとして使用できるスニペットの例について説明します。

組織内に複数のスクリプト開発者がいる場合は、協力してファイル パスの変数置換を使用する戦略を立てます。 これにより、時間が節約され、どの変数を使用すべきかを誰もが知ることができます。

ファイルパス変数置換例

ファイルパスの変数置換の例は、エントリスクリプトとして設定されています。 エントリスクリプトは、ポイントオブコンタクトクローズ済 電話番号やEメールアドレスなど、インバウンドコンタクトがインタラクションを開始するために使用するエントリーポイント。(POC)で設定されるデフォルトのスクリプトです。 この例では、エントリ スクリプトは、チャネルのルーティングを実行する別のスクリプトまで実行されます。 また、1 つのエントリ スクリプトを複数の POC のデフォルト スクリプトとして使用し、 スキルACDDNISクローズ済 エージェントのスキル、能力、知識に基づいてインタラクションの配信を自動化するために使用されます。 などの基準に基づいて 適切なルーティング スクリプトに実行クローズ済 インバウンドまたはアウトバウンドの音声通話でダイヤルされた番号。させることもできます。 複数の POC に 1 つのエントリスクリプトを使用する利点は、ファイルパス変数の置換を 1 か所でのみ定義することで、エラーの可能性を減らすことです。

エントリスクリプトの例には、次の画像に示すように、BEGINアクションに接続されたSNIPPETRUNSCRIPTアクションが含まれています。

SNIPPETアクションには、実行するスクリプトの名前とパスを決定するコードが含まれています。 この情報は、スクリプトやプロンプトなどを含むフォルダーへの絶対パスを作成するために使用されます。 独自のコードを記述するか、次の例を使用できます。

SELECT
 {
  CASE runScript.length > 0 //Voice, Legacy Chat, Work Item
  {
   ASSIGN normalizedScriptName = "{runScript}"
  }
  CASE __runScript.length > 0 //Legacy Email
  {
   ASSIGN normalizedScriptName = "{__runScript}"  
  }
  CASE __targetScript.length > 0 //Simulate Inbound
  {
   ASSIGN normalizedScriptName = "{__targetScript}"
  }
  CASE __scriptName.length > 0 //Digital
  {
   ASSIGN normalizedScriptName = "{__scriptName}"
  }
  CASE customScript.length > 0 //Custom Outbound script
  {
   ASSIGN normalizedScriptName = "{customScript}"  
  }
  CASE __reskillscript.length > 0 //Custom Script assigned to skill on reskill
  {
   ASSIGN normalizedScriptName = "{__reskillscript}"  
  }
  CASE global:callSuppScript.length > 0 //Suppression script
  {
   ASSIGN normalizedScriptName = "{global:callSuppScript}"
  }
}
IF normalizedScriptName.length > 0
{
 ASSIGN folderArray = "{normalizedScriptName.split('\')}"
 ASSIGN env = "{folderArray[1]}"
 FOR i = 1 TO folderArray.size - 1
 {
  ASSIGN folderPath = "{folderPath}\{folderArray[i]}"
  }
}
IF env.length = 0
 {
  ASSIGN env = "DEV"
 }
ASSIGN scriptPath = "~{folderPath}\"
ASSIGN promptPath = "~{folderPath}\Prompts\"
ASSIGN grammarPath = "~{folderPath}\Grammars\"

このコード例では、複数のSELECTを持つ ステートメントCASEsを使用しています。 各CASEは、現在のスクリプト名とパスを保持できるシステム変数の1つを表します。 特定のスクリプトで使用される変数は、スクリプトのタイプによって異なります。 スニペット:

  1. 現在のスクリプトへのパスと名前を含むシステム変数を検索します。 これを行うには、次のことを行います。

    1. CASEを評価して、指定された変数の値の長さが0より大きいかどうかを確認します。
    2. その場合、スニペットはそのCASEを選択し、変数の値をnormalizedScriptName変数に割り当てます。
  2. スクリプトが配置されている開発ワークフロー ステージ フォルダーの名前を決定します。 これを行うには、次のことを行います。

    1. split() 関数を使用して、バックスラッシュ文字(normalizedScriptName)を区切り文字として使用して\の値を配列に変換し、変換された値をfolderArrayに代入します。 これにより、スクリプトパス内のすべてのバックスラッシュがパイプ文字(|)に置き換えられ、パスとスクリプト名が配列に変換されます。 たとえば、normalizedScriptNameの値がProd\ScriptFolder3\ScriptExample1の場合、folderArrayの値はProd|ScriptFolder3 |ScriptExample1です。

    2. 現在の開発ワークフローステージフォルダの名前を保持するenvという変数を作成します。 スニペットは、最初の配列要素の内容をenvに入力します。 前の手順の例に従うと、envの値は Prod になります。

  3. 現在のスクリプトのフォルダへのパスを構築し、変数に格納します。 パス値には、スクリプトの名前は含まれません。 これを行うには、スニペット:

    1. FORループを使用して、folderArray内の各要素の値を、バックスラッシュ(folderPath)で区切られた新しい変数\に追加します。

  4. IFステートメントが含まれます。それは、env変数に値(IF env.length = 0)が入力されていることを確認するものです。 そうでない場合は、デフォルトとして dev が適用されます。 このIFステートメントは、前のIFステートメント中に何かが発生し、envが入力されない場合のバックアップとして機能します。

    この変数は、サンドボックス バージョンや開発バージョン、本番バージョンが存在する可能性のあるシステムとスクリプトが対話するさまざまな状況で使用されている環境を判別するために、Studio スクリプトでよく使用されるため、適切な値を持つことが重要です。 たとえば、これはCRMクローズ済 コンタクト、販売情報、サポートの詳細、ケース履歴などを管理するサードパーティシステム。との統合で一般的です。 組織の開発ステージ フォルダーの名前と一致するように値を変更できます。

  5. に基づいて、次のフォルダーの場所への絶対パスfolderPathを保持する変数を定義して入力します。

    • RUNSCRIPTアクションが起動するスクリプトを含むフォルダーの値は、以下のとおりです。

      ASSIGN scriptPath = "~{folderPath}\"

    • 後続のスクリプトが使用するプロンプトを含むフォルダー:

      ASSIGN promptPath = "~{folderPath}\Prompts\"

    • 後続のスクリプトが使用する文法ファイルを含むフォルダー:
      ASSIGN grammarPath = "~{folderPath}\Grammars\"

    追加の変数を作成して、ボイスメールなど、組織が使用する他のファイルの場所へのパスを保持できます。

上記のスニペットは、絶対パスを構築します。 この変数は、スニペット内のフォルダーパスまたはアクションプロパティの設定を必要とする後続のスクリプトで使用できます。 使用しているアクションが相対パスをサポートしている場合は、folderPath変数を使用しないことを選択できます。 ただし、ベストプラクティスStudioは、相対パスもサポートされている場合でも、可能な場合は絶対パスを使用することです。

エントリースクリプトスニペットのカスタマイズ

エントリスクリプトの例のスニペットをスクリプトで使用できるようにするには、いくつかの変数をカスタマイズする必要があります。

これらの変数名は、必要に応じて変更できます。 ただし、他のスクリプトで既に使用されている変数名を変更する場合は、スクリプト内の古い名前のすべてのインスタンスを変更する必要があります。 envの名前は変更しないでください。

その他のカスタマイズには、次のものがあります。

  • スクリプトで参照する他のフォルダーがある場合は、既存の変数の例に従って、変数を追加し、その値を適切に構成します。

  • 次のIFステートメントで、envに割り当てられたデフォルト値を開発ステージの最上位フォルダーと一致するように変更します。

    
    IF env.length = 0
     {
      ASSIGN env = "DEV"
     }

複数のスクリプトを起動するためのエントリースクリプトの設定

エントリスクリプトを設定して、RUNSCRIPTアクションが起動するスクリプトを選択できます。 これは、複数のメインスクリプトに同じエントリスクリプトを使用する場合に便利です。

これを設定するには、エントリスクリプトのSNIPPETに、適切なスクリプトの選択方法を定義するスクリプトロジックを追加します。 次の例では、意思決定基準として SWITCHDNIS を指定した クローズ済 インバウンドまたはアウトバウンドの音声通話でダイヤルされた番号。 ステートメントを使用します。 組織のニーズを満たすために、サポートされている任意のスクリプト ロジックと条件を使用できます。 このコードをカスタマイズするには、各nextScript変数の値で、その基準に適したスクリプトが定義されていることを確認します。 各スクリプトの説明を提供するために、二重スラッシュ(//)を含むコメントを含めます。

SWITCH DNIS // choose the next script based on a DNIS
{
CASE 8885551234  {
	ASSIGN nextScript = "{scriptPath}MainGreeting1"
  }
CASE 8005552345
  {
    ASSIGN nextScript = "{scriptPath}MainGreeting2" 
  }
CASE 6145554567  {
    ASSIGN nextScript = "{scriptPath}MainGreeting3" 
  }
DEFAULT
  {
    ASSIGN nextScript = "{scriptPath}MainGreeting4" 
  }

スクリプトでのパス変数の使用

エントリスクリプトを設定したら、そのスクリプトで定義されている変数を他のスクリプトで使用する必要があります。

本番スクリプトは変更しないでください。 可能な場合は常にスクリプトの開発バージョンを使用してください。 スクリプトを本番環境に戻す前に、すべての変更をテストします。 本番スクリプトを直接変更すると、影響を受けるポイントオブコンタクトクローズ済 電話番号やEメールアドレスなど、インバウンドコンタクトがインタラクションを開始するために使用するエントリーポイント。にコンタクトがルーティングされなくなる可能性があります。

  1. Studioで、スクリプトを調べて、ファイルパスが使用されているインスタンスを探します。 パスは、プロパティの設定、キャプション、変数値、スニペット コードに表示される場合があります。 特に、RUBSUBRUNSCRIPTSPAWNMUSICPLAYWHISPER、およびASRまたはファイル関連のアクションなどのアクションを確認します。 特定のアクションを含むスクリプトや、キャプションにフォルダ名が含まれているスクリプトを検索できます。

  2. ファイルパスの適切な部分を、エントリスクリプトで定義されている対応する変数に置き換えます。 たとえば、MENUアクションにSequence01MainGreetingMenu.wavを再生するように構成されたプロパティがある場合は、それを"{promptPath}01MainGreetingMenu.wav"に変更します。 次の図は、スクリプト内のこの例をいくつか示しています。