Значение исключения не может быть нулевым. Значение имени параметра возникает при добавлении аудиофайла воспроизведения к существующему исходящему вызову с использованием nexmo в asp.net mvc

    [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");
    }

контекст: я успешно выполнил исходящий вызов, но всякий раз, когда я пытаюсь добавить воспроизведение аудиофайла к существующему вызову, он дает мне исключение: значение не может быть нулевым. Имя параметра является значением. Может ли кто-нибудь дать мне какое-нибудь предложение?

Описание ошибки: [ArgumentNullException: значение не может быть нулевым. Имя параметра: значение] Newtonsoft.Json.JsonConvert.DeserializeObject(строковое значение, тип типа, настройки JsonSerializerSettings) +242 Newtonsoft.Json.JsonConvert.DeserializeObject(строковое значение, настройки JsonSerializerSettings) +66 Nexmo.Api.Voice.Call.BeginStream( Идентификатор строки, StreamCommand cmd, Credentials Credentials) +103

[Описание изображения: Ошибка, которую я получил, когда пытался добавить воспроизведение аудиофайла к исходящему вызову http://i66.tinypic.com/2wfoi0l.jpg].

[Описание изображения: UUID, который я получил, когда совершал исходящий вызов http://i68.tinypic.com/mtqv7m.jpg]


person BITZ    schedule 29.08.2018    source источник
comment
вы всегда можете посмотреть журнал изменений, так что нет никакой безопасности, если вы удалите фразу из ответа или вашего вопроса. Даже если вы удалите свой вопрос, вы все равно сможете найти его в веб-архиве и т. д.   -  person hellow    schedule 04.09.2018


Ответы (4)


Вам нужно купить виртуальный номер Nexmo, чтобы совершать звонки. Когда вы регистрируетесь в учетной записи Nexmo, вы получаете бесплатный кредит, который вы можете использовать для получения номера.

person Rabeb Othmani    schedule 30.08.2018
comment
Спасибо :) Можете ли вы перепроверить пост и дать мне какое-нибудь предложение? - person BITZ; 30.08.2018
comment
Это определенно не причина исключения. - person Jacob; 21.12.2019

Чтобы использовать TTS, вам не нужно использовать BeginTalk, вам просто нужно поместить TTS в NCCO и использовать его как answer_url для вызова.

person Rabeb Othmani    schedule 05.09.2018
comment
github.com/nexmo-community/ nexmo-dotnet-quickstart/blob/ASPNET/ тогда почему используется beginTalk при отправке TTS - person BITZ; 06.09.2018
comment
BeginTalk используется для прерывания текущего вызова новой инструкцией TTS. Если вам не нужно прерывать текущий вызов, то просто предоставить NCCO команду talk проще для чтения текста слушателю. - person Judy2K; 11.09.2018
comment
Judy2K Спасибо за совет :). Если я использую BeginTalk, также не должно быть никаких проблем, но мой вопрос заключается в том, почему я получаю сообщение об ошибке [ArgumentNullException: значение не может быть нулевым. Имя параметра: значение] Newtonsoft.Json.JsonConvert.DeserializeObject (значение строки, тип типа, настройки JsonSerializerSettings), когда я пытаюсь использовать BeginTalk или BeginStream для TTS или Stream - person BITZ; 11.09.2018

У меня такая же ошибка при попытке отправить голосовой вызов. В конце концов, создание нового приложения на панели инструментов Nexmo и добавление голосовых возможностей в это приложение, похоже, решили проблему. Я перепроверил, удалив голосовую возможность из приложения, и это дало мне ошибку «Значение не может быть нулевым». Надеюсь, это поможет кому-то

person AshleyAsh1990    schedule 17.01.2020

Плохая обработка ошибок — текущая проблема в SDK.

Произошло то, что ответ, полученный SDK от сервера, не был успешным, поэтому SDK так и не извлек JSON, поэтому, когда он попытался проанализировать JSON, он выдал эту ошибку.

Без кода ошибки невозможно точно сказать, что пошло не так. Я предполагаю, что это либо 401 (неправильные учетные данные), либо 400 (неверно сформированный запрос).

Лучше всего включить ведение журнала, см. раздел ведения журнала в README и посмотрите, какой код ошибки вы получите.

person slorello    schedule 18.01.2020