// POST: api/WebhookManage public async Task <IHttpActionResult> Post(string userToken, string botName) { Trace.TraceInformation($"Setting webhook {userToken}:{botName}"); var rq = new RestClient(uri) { Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator( await _channelsService.GetBotToken(userToken, botName), "Bearer") }; var rc = new RestRequest("webhooks", Method.POST); var builder = new UriBuilder("https", "ch-channel-spark.azurewebsites.net", 443, $"api/webhook/{userToken}/{botName}"); var webhook = builder.Uri.ToString(); Trace.TraceInformation($"Webhook to set {webhook}"); rc.AddJsonBody( new { name = $"ChatFirst WebHook for {botName}", targetUrl = webhook, resource = "messages", @event = "created", secret = $"{userToken}:{botName}" // todo hash it }); var result = await rq.ExecuteTaskAsync(rc); Trace.TraceInformation($"Answer {result.ResponseStatus}/{result.StatusCode}: {result.Content}"); if (result.StatusCode != HttpStatusCode.OK) { return(Ok(result.Content)); } dynamic data = JObject.Parse(result.Content); await _channelsService.SaveWebhookId(userToken, botName, data.id); return(Ok(result.Content)); }