根据Voice Redirect命令的文档,应该可以重定向到相对URL(对于GET请求),在我的情况下,可以重定向到相同的URL。
var response = new VoiceResponse();
response.Say("Hello World");
response.Redirect(null, Twilio.Http.HttpMethod.Get);
其中产生以下XML:
<?xml version="1.0" encoding="utf-8"?>
<Response>
<Say voice="man">Hello World</Say>
<Redirect method="GET"></Redirect>
</Response>
预期的行为是正确的,它将重定向回初始URL,但重定向上发送的查询参数似乎不断添加更多(和更多)查询参数。以下是来自ngrok的一些片段:
尝试使用相对路径重定向到URL,假设primary是我的端点:
response.Redirect(new Uri("../primary", UriKind.Relative), Twilio.Http.HttpMethod.Get);
创建XML时出现异常 - 相对URI不支持此操作。
有没有更好的方法重定向到相同的相对URL?
Twilio开发者传道者在这里。
更新
这个错误已在Twilio C#5.9.5版中修复。用serializer was implemented for URLs代替叫AbsoluteUri
。请更新并尝试一下。
原始答案
我将从一个警告开始,我不是C#开发人员,所以这是我对情况和源代码的了解。
这似乎是C#库中的一个错误。具体来说,我们说允许相对URL,但是当使用URL the library calls on the AbsoluteUri
属性时,在相对URL上调用时会引发InvalidOperationException
。
如果是这种情况,最好是raise an issue against twilio-csharp解释发生了什么。我建议您自己提出问题,以便在完成工作时收到警报。
如果这有帮助,请告诉我。