public async Task <HttpResponseMessage> JoinCallAsync([FromBody] JoinCallBody joinCallBody) { try { var call = await _botService.JoinCallAsync(joinCallBody).ConfigureAwait(false); var callPath = $"/{HttpRouteConstants.CallRoute.Replace("{callLegId}", call.Id)}"; var callUri = $"{_settings.ServiceCname}{callPath}"; _eventPublisher.Publish("JoinCall", $"Call.id = {call.Id}"); var values = new JoinURLResponse() { Call = callUri, CallId = call.Id, ScenarioId = call.ScenarioId }; var serializer = new CommsSerializer(pretty: true); var json = serializer.SerializeObject(values); var response = this.Request.CreateResponse(HttpStatusCode.OK); response.Content = new StringContent(json, Encoding.UTF8, "application/json"); return(response); } catch (ServiceException e) { HttpResponseMessage response = (int)e.StatusCode >= 300 ? this.Request.CreateResponse(e.StatusCode) : this.Request.CreateResponse(HttpStatusCode.InternalServerError); if (e.ResponseHeaders != null) { foreach (var responseHeader in e.ResponseHeaders) { response.Headers.TryAddWithoutValidation(responseHeader.Key, responseHeader.Value); } } response.Content = new StringContent(e.ToString()); return(response); } catch (Exception e) { _logger.Error(e, $"Received HTTP {this.Request.Method}, {this.Request.RequestUri}"); HttpResponseMessage response = this.Request.CreateResponse(HttpStatusCode.InternalServerError); response.Content = new StringContent(e.Message); return(response); } }
public async Task <IActionResult> JoinCallAsync([FromBody] JoinCallBody joinCallBody) { try { var call = await _botService.JoinCallAsync(joinCallBody).ConfigureAwait(false); var callPath = $"/{HttpRouteConstants.CallRoute.Replace("{callLegId}", call.Id)}"; var callUri = $"{_settings.ServiceCname}{callPath}"; var values = new JoinURLResponse() { Call = callUri, CallId = call.Id, ScenarioId = call.ScenarioId, Logs = callUri.Replace("/calls/", "/logs/") }; var json = JsonConvert.SerializeObject(values); return(Ok(values)); } catch (ServiceException e) { HttpResponseMessage response = (int)e.StatusCode >= 300 ? new HttpResponseMessage(e.StatusCode) : new HttpResponseMessage(HttpStatusCode.InternalServerError); if (e.ResponseHeaders != null) { foreach (var responseHeader in e.ResponseHeaders) { response.Headers.TryAddWithoutValidation(responseHeader.Key, responseHeader.Value); } } response.Content = new StringContent(e.ToString()); return(StatusCode(500, e.ToString())); } catch (Exception e) { _logger.Error(e, $"Received HTTP {this.Request.Method}, {this.Request.Path.Value}"); return(StatusCode(500, e.Message)); } }