C# 中的 Microsoft.Rtc.Collaboration.AudioVideo.VoiceXml.Browser 对象有一个 RunAsync 方法,该方法采用要运行的 Vxml 页面的 URI 和一个 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 的示例。我确信有一种方法可以访问传入的项目,但我无法弄清楚如何;有什么想法吗?