मैं वास्तव में ट्विलियो के माध्यम से उन्नत एएमडी का उपयोग कैसे करूं? मैं समझता हूं कि यह केवल आरईएसटी एपीआई (कोई ट्वीएमएल) के माध्यम से किया जा सकता है लेकिन मुझे मानक कॉल और आंसरिंग मशीन डिटेक्शन के बीच संबंध देखने में कठिनाई हो रही है।

मैंने इस पेज को पढ़ लिया है कई बार, लेकिन मुझे अभी भी समझ में नहीं आया। तो यहां आरईएसटी एपीआई के माध्यम से कॉल करने के लिए मानक सी # कोड है:

    TwilioClient.Init(AccountSid, AuthToken);

    var to = new PhoneNumber("+14155551212");
    var from = new PhoneNumber("+15017250604");
    var call = CallResource.Create(to, from, url: new Uri("http://demo.twilio.com/docs/voice.xml"));

और उपरोक्त लिंक से मेरा सी # अनुवादित कोड यहां दिया गया है:

        using (var client = new HttpClient())
        {
            var byteArray = Encoding.ASCII.GetBytes($@"{AccountSid}:{AuthToken}");
            var header = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
            client.DefaultRequestHeaders.Authorization = header;

            var requestContent = new FormUrlEncodedContent(new[]
                                                           {
                                                               new KeyValuePair<string, string>("To", "+15017250604"),
                                                               new KeyValuePair<string, string>("From", "+15017250604"),
                                                               new KeyValuePair<string, string>("MachineDetection", "DetectMessageEnd"),
                                                               new KeyValuePair<string, string>("Url", Url.Action("PostTransfer"))
                                                           });

            var response = client.PostAsync(_amdRequest, requestContent);
            var responseContent = response.Result.Content;
        }

तो मुझे क्या याद आ रही है? मुझे यकीन है कि यह कुछ आसान है, लेकिन मैं यह नहीं देख रहा हूं कि उन्नत एएमडी कैसे जानता है कि किस कॉल को सुनना है, और यहां घटनाओं का क्रम क्या होना चाहिए। और अंत में, मुझे परिणाम कैसे देखना चाहिए?

संपादित करें:

तो क्रिस्टल स्पष्ट होने के लिए, मेरा कोड यहां है क्योंकि यह वर्तमान में बैठता है:

            TwilioClient.Init(AccountSid, AuthToken);

        var toPhone = new PhoneNumber(to);
        var fromPhone = new PhoneNumber(from);
        var call = CallResource.Create(toPhone, fromPhone, url: new Uri("http://demo.twilio.com/docs/voice.xml"));

        using (var client = new HttpClient())
        {
            var byteArray = Encoding.ASCII.GetBytes($@"{AccountSid}:{AuthToken}");
            var header = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
            client.DefaultRequestHeaders.Authorization = header;

            var requestContent = new FormUrlEncodedContent(new[]
                                                           {
                                                               new KeyValuePair<string, string>("To", to),
                                                               new KeyValuePair<string, string>("From", from),
                                                               new KeyValuePair<string, string>("MachineDetection", "DetectMessageEnd"),
                                                               new KeyValuePair<string, string>("Url", Url.Action("PostTransfer"))
                                                           });

            var response = client.PostAsync(_amdRequest, requestContent);
            var responseContent = response.Result.Content;
        }

और मेरे कोड में कहीं और "पोस्टट्रांसफर" नामक एक फ़ंक्शन है जिसे "AnsweredBy" पैरामीटर मिलता है और कॉल के बाद कुछ सामान करता है। क्या यह काम करना चाहिए? क्योंकि ऐसा नहीं है। कॉल के माध्यम से चला जाता है और मैं ट्विलियो के उदाहरण फ़ाइल को सुन सकता हूं, लेकिन यह कभी भी "पोस्टट्रांसफर" फ़ंक्शन तक नहीं पहुंचता है।

0
bkmo 15 अगस्त 2017, 15:12

2 जवाब

सबसे बढ़िया उत्तर

ट्विलियो डेवलपर इंजीलवादी यहाँ।

ऐसा लगता है कि आप सफलतापूर्वक पहचान के साथ कॉल कर रहे हैं। आप अपने ट्विलियो नंबर से एक उपयोगकर्ता नंबर पर कॉल कर रहे हैं।

आप आंसरिंग मशीन डिटेक्शन के परिणाम तब देखते हैं जब ट्विलियो ने यह तय कर लिया है कि यह मशीन है या मानव, जिस बिंदु पर यह आपके URL के लिए एक वेबहुक अनुरोध करता है जिसे आप कॉल करने के भाग के रूप में भेजते हैं।

जब ट्विलियो वेबहुक बनाता है, तो इसमें एक अतिरिक्त पैरामीटर शामिल होगा: AnsweredBy। जब आप MachineDetection को DetectMessageEnd AnsweredBy के मान हो सकते हैं: machine_end_beep, machine_end_silence, machine_end_other, human, fax, और unknown। फिर आप इस मान को पढ़ सकते हैं और तय कर सकते हैं कि इस बिंदु पर कॉल का क्या करना है।

क्या उससे किसी भी तरह से सहायता मिलती है?

0
philnash 15 अगस्त 2017, 17:20

क्या आप इसके बजाय HttpWebRequest आज़मा सकते हैं? यहाँ एक उदाहरण है कि यह कैसे करना है,

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Method = "POST";
request.Headers.Add("Authorization", string.Format("Bearer {0}",AccessToken));
request.ContentType = "application/json;charset=utf-8";
request.ContentLength = body.Length;
request.Accept = "application/json"

if (!string.IsNullOrWhiteSpace(body))
            {
                System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
                byte[] bytes = encoding.GetBytes(body);

                request.ContentLength = bytes.Length;

                using (Stream requestStream = request.GetRequestStream())
                {
                    // Send the data.
                    requestStream.Write(bytes, 0, bytes.Length);
                }
            }

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                if (callback != null)
                {
                    var reader = new StreamReader(response.GetResponseStream());
                    callback(reader.ReadToEnd());
                }
            }
0
Reedwanul Islam 15 अगस्त 2017, 15:30