Beispiel #1
0
        public HttpResponseMessage Status()
        {
            // create a logger placeholder
            Logger logger      = null;
            var    httpRequest = new HttpRequestMessage();

            try
            {
                logger = NexmoLogger.GetLogger("VoiceStatusLogger");
                logger.Open();

                using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
                {
                    var value      = reader.ReadToEndAsync();
                    var callStatus = JsonConvert.DeserializeObject <CallStatus>(value.Result, new JsonSerializerSettings
                    {
                        NullValueHandling = NullValueHandling.Ignore
                    });
                    logger.Log("Voice Status update body: " + JsonConvert.SerializeObject(callStatus, Formatting.Indented));

                    // Add status update to a queue
                    var queue = Storage.CreateQueue("voicestatus", configuration, logger);
                    Storage.InsertMessageInQueue(queue, value.Result, 120, logger);

                    if (callStatus.status == "machine")
                    {
                        // Transfer the call to the answer machine message
                        if (NexmoApi.TransferCall(logger, configuration))
                        {
                            return(httpRequest.CreateResponse(System.Net.HttpStatusCode.OK));
                        }
                    }
                }
            }
            catch (Exception e)
            {
                logger.Log(Level.Exception, e);
                return(httpRequest.CreateResponse(System.Net.HttpStatusCode.InternalServerError));
            }
            finally
            {
                logger.Close();
                logger.Deregister();
            }

            return(httpRequest.CreateResponse(System.Net.HttpStatusCode.OK));
        }