1

C#のMicrosoft.Rtc.Collaboration.AudioVideo.VoiceXml.Browserオブジェクトには、実行するVxmlページのURIを取得するRunAsyncメソッドと、理論的には、内で使用できるパラメーターを渡すことができるCookieCollectionがあります。脚本。VxmlからCookieを取得するために考えられるすべての方法を試しましたが、ドキュメントに添付されているものはないようです。Vxmlから渡されたCookieにアクセスする方法に関するアイデアはありますか?

その単純なリストでは、これは私がvxmlとして持っていたものです:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE vxml PUBLIC "-//BeVocal Inc//VoiceXML 2.0//EN" "http://cafe.bevocal.com/libraries/dtd/vxml2-0-bevocal.dtd">
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml" xml:lang="en-US" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml21/vxml.xsd" >
  <form id="QueueForm">
  <script> 
   <![CDATA[
      function GetCookie(name)
      {         
         var cookies = document.cookie;
         return cookies;
      }
   ]]>
  </script>
  <var name="cookie" expr="GetCookie('')" />
    <field name="QueueField">
      <prompt>
        <value expr="cookie" />
        were cookies
      </prompt>
      <grammar mode="dtmf" root="Dtmf">
        <rule id="Dtmf">
          <one-of>
            <item> 1 </item>
          </one-of>
        </rule>
      </grammar>
      <filled>
        <exit namelist="cookie"/>
      </filled>
    </field>
  </form>
</vxml>

そしてこれは呼び出しコードで

_browser.SetAudioVideoCall(_call);
System.Net.CookieContainer cookies = new System.Net.CookieContainer(1);
cookies.Add(new System.Net.Cookie("data", "grapefruit", "/", "localhost"));
_browser.Run(_startPage, cookies);

...これにより、「Cookieでした」という音声が表示されます。すべての場合に私は試しました。

Cookieオブジェクトにさまざまなドメインとパスを設定し、さまざまなJavascriptオブジェクトを呼び出して、さまざまな方法でCookieを取得しようとしましたが、Cookieにアクセスできませんでした。VxmlのMicrosoftサンプルプロジェクトにも、Cookieにアクセスする例は含まれていません。渡されたアイテムにアクセスする方法があると確信していますが、その方法を理解できていません。何かご意見は?

4

1 に答える 1

1

私は、UCMA 3.0 に同梱された VoiceXML ブラウザー API の PM でした。その実装に取り​​組んでいる開発者の 1 人に連絡を取り、この問題を調査するように依頼しました。これが彼女の反応です。

VXML ブラウザでは、Run() および RunAsync() メソッドで CookieContainer をブラウザに送信できます。実行中、ブラウザは vxml コンテンツの http 要求をサーバーに発行します。この Cookie コンテナーは http 要求の一部として送信され、サーバーから送信されたすべての Cookie も最終的にこのコンテナーに入ります。これは設計ごとです。

これにより、送信された Cookie に基づいて異なる vxml を提供する可能性がある動的サーバーを作成できます。また、セッションの完了後にサーバーの Cookie 値を確認することもできます。たとえば、ゴールド カスタマー アカウントは特別なダイアログであり、サーバーは Cookie を送信して、ブラウザーの完了後にどのキューに呼び出しを送信するかを判断するのに役立ちます。

ただし、Cookie は vxml アプリケーション自体には渡されません。つまり、vxml ドキュメント内の JavaScript レベルではアクセスできません。これは便利だということには同意します。確かに、「document.cookie」にアクセスできる HTML ブラウザを扱っていたエンジニアは、これを期待するかもしれません。しかし、w3c の vxml 仕様は、この領域での標準的な動作を要求しておらず、Microsoft ブラウザーはこの機能を提供していません。

このような機能が必要な場合、エンジニアリング ソリューションの 1 つは、サーバーに Cookie を読み取らせ、Cookie の値をいくつかの JavaScript 変数に設定して vxml を動的に生成させることです。

于 2012-02-22T19:06:49.280 に答える