Question

Je fais un système RVI pour un projet, et ont décidé Twilio pour gérer le téléphone partie (effectuer et recevoir des appels, envoyer et recevoir des messages SMS). Cela surface d'un site Web avec un frontal IVR, ce qui permet aux utilisateurs de naviguer sur le site en utilisant leur téléphone à clavier.

Je ne fais pas tout le contenu peut parcourir, par téléphone, tout ce qui fait sens.

Twilio envoie des paramètres à votre URL sur la chaîne de requête ou via POST, et vous répondez avec un sous-ensemble particulier de XML qui indique à l'IVR comment agir. J'ai fait beaucoup de progrès très rapidement avec ASP.net MVC, le traitement du contenu XML Twilio en vue, et rendre les données du site à lui.

Voici ce qu'est une réponse à Twilio ressemble à:

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

Voici ce que le menu ressemble à 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> 

est ici où je suis bloqué:

Je suis en train d'ajouter un bouton universel « retour », peut-être un « sauter » bouton, un bouton « repeat », etc, et je trouve que sur chaque point de vue, je détecter le chiffre pressé puis si-tion à un Response.Redirect() hardcoded. Je sais que cela va devenir rapidement ingérable pour un grand nombre de vues et menus.

Alors, comment puis-je modéliser l'application MVC pour que ce soit plus comme une application et moins comme un jeu de Zork? Empilements d'objets du menu, chacun avec des listes d'objets MenuItem? Comment puis-je faire, dire « 9 » l'option universelle pour un « retour » et l'application ont le respecter, peu importe où dans le système de menu, l'utilisateur est, sans avoir à coder pour dans chaque vue?

La fonction de retour est juste un symptôme du chaos ce projet dans l'étape si je ne prends pas un moment pour concevoir correctement. Y at-il des cadres .net IVR là-bas que je peux des idées inspecter? Toute aide serait appréciée, je sais que ce n'est pas un nouveau problème, je juste ne peux pas obtenir ma tête autour du meilleur chemin à prendre.

Était-ce utile?

La solution

Bien que je n'ai presque pas la moindre idée de ce que vous parlez, puisque personne ne dit sofar tout ce que je vais avoir une chance (ne me tirez pas si je suis tout à fait pas dans la direction).

Dans MVC 2, vous pouvez rendre les actions dans votre point de vue:

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

appellerait l'action Menu dans votre contrôleur Home avec les paramètres donnés. Le Result de cette Action serait alors inséré dans votre vue.
De cette façon, vous pouvez garder votre point de vue propre, et tous vos trucs de menu en un seul endroit. Juste ajouter la ligne indiquée ci-dessus dans toutes les vues.

Encore une fois la même chose peut être fait avec des années HtmlHelper, mais parfois la manière indiquée ci-dessus est juste plus facile.

Autres conseils

Ricky de Twilio ici.

Pour une raison quelconque, le code ayant qui est organisé comme Zork semble amusant pour moi, mais dans la pratique, je peux comprendre comment cela peut conduire quelqu'un fou!

Nous venons de lancer un tas de tutoriels non triviales, production prête à aider lorsque les développeurs ont des questions sur la façon d'organiser une sorte d'application spécifique. Un tutoriel est un IVR construit en utilisant C # avec ASP.NET MVC .

Un regard sur la façon dont nous décidons de structurer les choses, nous utilisons 3 contrôleurs pour contrôler notre logique:

  • IVRController.cs :. Ce contrôleur contient le code qui accueille un utilisateur quand ils appellent dans notre RVI
  • MenuController.cs :. Ce contrôleur est là que nous déterminons le menu IVR approprié pour l'utilisateur en fonction de leurs entrées
  • PhoneExchangeController.cs :. Dans ce contrôleur, nous avons la logique de transmettre un appel de notre RVI à un autre numéro de téléphone

Comme vous cherchez à personnaliser l'expérience en ajoutant quelque chose comme « Appuyez sur 9 pour revenir en arrière », apporter des modifications à MenuController.cs devrait vous aider à y arriver.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top