[HttpPost]
public ActionResult MakeCall(string ToNumber)
{
string TO_NUMBER = ToNumber;
string NEXMO_NUMBER = "************";
var results = Client.Call.Do(new Call.CallCommand
{
to = new[]
{
new Call.Endpoint {
type = "phone",
number = TO_NUMBER
}
},
from = new Call.Endpoint
{
type = "phone",
number = NEXMO_NUMBER
},
answer_url = new[]
{
"https://developer.nexmo.com/ncco/tts.json"
},
machine_detection = "hangup"
});
Session["UUID"] = results.uuid;
return PlayAudioStreamToCall();
}
[HttpPut]
public ActionResult PlayAudioStreamToCall()
{
string NEXMO_CALL_UUID = Session["UUID"].ToString();
var result = Client.Call.BeginStream(NEXMO_CALL_UUID, new Call.StreamCommand
{
stream_url = new[]
{
"https://nexmo-community.github.io/ncco-examples/assets/voice_api_audio_streaming.mp3"
}
});
return RedirectToAction("MakeCall");
}
上下文: 我已经成功进行了出站呼叫,但是每当我尝试向现有呼叫中添加“播放音频文件”时,都会给我一个例外:“值不能为null。参数名称为value”。有人可以给我一些建议吗?
错误说明: [ArgumentNullException:值不能为null。 参数名称:值] Newtonsoft.Json.JsonConvert.DeserializeObject(字符串值,类型,JsonSerializerSettings设置)+242 Newtonsoft.Json.JsonConvert.DeserializeObject(字符串值,JsonSerializerSettings设置)+66 Nexmo.Api.Voice.Call.BeginStream(String id,StreamCommand cmd,Credentials creds)+103
[图像描述:尝试添加“将音频文件播放到呼出电话”时出现错误 http://i66.tinypic.com/2wfoi0l.jpg]。
[图片描述:我打出站电话时收到的UUID http://i68.tinypic.com/mtqv7m.jpg]
答案 0 :(得分:0)
您需要购买Nexmo虚拟号码才能拨打电话。 注册Nexmo帐户后,您会获得一些免费积分,因此您可以使用该积分获得一个号码。
答案 1 :(得分:0)
要使用TTS,您无需使用BeginTalk,只需将TTS放入NCCO中并将其用作呼叫的answer_url。
答案 2 :(得分:0)
尝试发送语音呼叫时出现相同的错误。最后,在Nexmo仪表板中创建一个新应用程序,并向该应用程序添加语音功能似乎可以解决该问题。我通过从应用程序中删除语音功能进行了重新检查,它给了我Value不能为null的错误。希望这会帮助某人
答案 3 :(得分:0)
错误处理能力差是SDK中的当前问题。
发生了什么事,SDK从服务器返回的响应不成功,因此SDK从未提取JSON-因此,当它尝试解析JSON时会引发此错误。
如果没有错误代码,就不可能确切地说出问题所在。我猜这可能是401(错误的身份验证凭据)或400(格式错误的请求)。
最好的选择是启用日志记录,请参阅README的日志记录部分,并查看返回的错误代码。