Elouali Akram

Elouali Akram

  • NA
  • 20
  • 2k

Retrieve leads using weebhooks

Dec 11 2020 4:23 AM
in the code below idk were my leads are stored ?
  1. using System;  
  2. using System.Diagnostics;  
  3. using System.Linq;  
  4. using System.Net;  
  5. using System.Net.Http;  
  6. using System.Net.Http.Headers;  
  7. using System.Threading.Tasks;  
  8. using System.Web;  
  9. using System.Web.Http;  
  10. using FacebookLeadAdsWebhooks.Model;  
  11. using Newtonsoft.Json;  
  12. namespace FacebookLeadAdsWebhooks.Controller  
  13. {  
  14. public class WebhooksController : ApiController  
  15. {  
  16. #region Get Request  
  17. [HttpGet]  
  18. public HttpResponseMessage Get()  
  19. {  
  20. var response = new HttpResponseMessage(HttpStatusCode.OK)  
  21. {  
  22. Content = new StringContent(HttpContext.Current.Request.QueryString["hub.challenge"])  
  23. };  
  24. response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain");  
  25. return response;  
  26. }  
  27. #endregion Get Request  
  28. #region Post Request  
  29. [HttpPost]  
  30. public async Task<HttpResponseMessage> Post([FromBody] JsonData data)  
  31. {  
  32. try  
  33. {  
  34. var entry = data.Entry.FirstOrDefault();  
  35. var change = entry?.Changes.FirstOrDefault();  
  36. if (change == nullreturn new HttpResponseMessage(HttpStatusCode.BadRequest);  
  37. //Generate user access token here https://developers.facebook.com/tools/accesstoken/  
  38. const string token = "<USER TOKEN>";  
  39. var leadUrl = $"https://graph.facebook.com/v2.10/{change.Value.LeadGenId}?access_token={token}";  
  40. var formUrl = $"https://graph.facebook.com/v2.10/{change.Value.FormId}?access_token={token}";  
  41. using (var httpClientLead = new HttpClient())  
  42. {  
  43. var response = await httpClientLead.GetStringAsync(formUrl);  
  44. if (!string.IsNullOrEmpty(response))  
  45. {  
  46. var jsonObjLead = JsonConvert.DeserializeObject<LeadFormData>(response);  
  47. //jsonObjLead.Name contains the lead ad name  
  48. //If response is valid get the field data  
  49. using (var httpClientFields = new HttpClient())  
  50. {  
  51. var responseFields = await httpClientFields.GetStringAsync(leadUrl);  
  52. if (!string.IsNullOrEmpty(responseFields))  
  53. {  
  54. var jsonObjFields = JsonConvert.DeserializeObject<LeadData>(responseFields);  
  55. //jsonObjFields.FieldData contains the field value  
  56. }  
  57. }  
  58. }  
  59. }  
  60. return new HttpResponseMessage(HttpStatusCode.OK);  
  61. }  
  62. catch (Exception ex)  
  63. {  
  64. Trace.WriteLine($"Error-->{ex.Message}");  
  65. Trace.WriteLine($"StackTrace-->{ex.StackTrace}");  
  66. return new HttpResponseMessage(HttpStatusCode.BadGateway);  
  67. }  
  68. }  
  69. #endregion Post Request  
  70. }  
  71. }  

Answers (3)