Domanda

Sto facendo un sistema IVR per un progetto, e hanno deciso su Twilio per gestire il telefono porzione (effettuare e ricevere chiamate, inviare e ricevere messaggi SMS). Questo verrà a galla un sito web con un front-end IVR, consentendo agli utenti di navigare il sito utilizzando il proprio telefono a toni.

Non sto facendo tutti i contenuti browse-grado al telefono, proprio quello che ha un senso.

Twilio manda in parametri per il vostro URL su querystring o tramite POST, e vi rispondono con un sottoinsieme speciale di XML che racconta l'IVR come agire. Ho fatto un sacco di progressi molto rapidamente con ASP.net MVC, trattando il contenuto XML Twilio come una visualizzazione e il rendering dei dati del sito ad esso.

Ecco quello che una risposta a Twilio appare come:

<?xml version="1.0" encoding="UTF-8" ?> 
<Response>
<Say>Hello World</Say>
<Play>http://api.twilio.com/Cowbell.mp3</Play>
</Response> 

Ecco quello che un menu assomiglia a Twilio:

<?xml version="1.0" encoding="UTF-8" ?> 
<Gather action="http://your_url" numdigits="1">
<Say>Press 1 to execute your_url, passing a parameter named "digits"</Say>
</Response> 

Ecco dove mi sono bloccato:

Sto cercando di aggiungere un pulsante universale "indietro", forse un tasto "Skip", un pulsante, ecc "Repeat", e ho constatato che su ogni vista, sto rilevando la cifra premuto e poi se-zione ad un Response.Redirect() hardcoded. So che questo sta per diventare rapidamente impossibile da mantenere per un gran numero di punti di vista e menu.

Quindi, come posso modellare l'applicazione MVC in modo che sia più simile a un'applicazione e meno come un gioco di Zork? Pile di oggetti di menu, ciascuno con elenchi di oggetti MenuItem? Come posso fare, dire "9" l'opzione universale per "indietro" e avere l'applicazione rispetto, non importa in quale parte del sistema di menu l'utente è, senza dover codice per esso in ogni vista?

La funzione di schiena è solo un sintomo del caos questo progetto farà un passo in se non prendo un momento ora per progettare in modo corretto. Ci sono .net framework IVR là fuori che posso verificare la presenza di idee? Qualsiasi aiuto sarebbe apprezzato, so che questo non è un problema nuovo, io proprio non riesco a ottenere la mia testa intorno il percorso migliore da intraprendere.

È stato utile?

Soluzione

Anche se io quasi non ho la minima idea di cosa si sta parlando, dal momento che nessuno ha detto niente sofar avrò un colpo a esso (non sparare me se io non sono del tutto nella direzione).

In MVC 2 è possibile rendere le azioni nel vostro punto di vista:

<%= Html.Action("home", "menu" , new { someparam = somevalue, someotherparam = someothervalue }) %>

Questo avrebbe chiamato l'azione Menu nel controller Home con i parametri indicati. Il Result di questo Action sarebbe poi essere inserito nel vostro punto di vista.
In questo modo è possibile mantenere le vostre opinioni pulito, e tutte le tue cose Menu in un unico luogo. Basta aggiungere la riga sopraindicato in ogni vista.

Anche in questo caso lo stesso può essere fatto con HtmlHelper, eppure a volte il modo sopraindicato è solo più facile.

Altri suggerimenti

Ricky da Twilio qui.

Per qualche ragione, avendo il codice che è organizzata come Zork sembra divertente per me, ma, in pratica, posso capire come questo può guidare qualcuno pazzo!

Abbiamo appena lanciato un gruppo di non banali, produzione pronto tutorial per aiutare quando gli sviluppatori hanno domande su come organizzare uno specifico tipo di applicazione. Un tutorial è un IVR costruito utilizzando C # con ASP.NET MVC .

Dando uno sguardo come decidiamo di strutturare le cose, che stiamo usando 3 controller per controllare la nostra logica:

  • IVRController.cs :. Questo controller contiene il codice che accoglie un utente quando chiamano nel nostro IVR
  • MenuController.cs :. Questo regolatore è dove si determina il menu IVR appropriato per l'utente a seconda dei loro ingressi
  • PhoneExchangeController.cs :. In questo controller, abbiamo la logica di inoltrare una chiamata dal nostro IVR a un altro numero di telefono

Come stai cercando di personalizzare l'esperienza con l'aggiunta di qualcosa come "Premere 9 per tornare indietro", di apportare modifiche al MenuController.cs dovrebbe aiutare arrivare lì.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top