Где включить SMS-функциональность в приложение MVC? - PullRequest
5 голосов
/ 04 февраля 2012

Я планирую переписать приложение, которое использует Zend Framework и Twilio (для отправки и получения SMS-сообщений).Оглядываясь назад, я не думаю, что разместил все функции SMS в нужных местах.Это затруднило обновление сайта.

В настоящее время у меня есть контроллер SMS, который обрабатывает запросы от Twilio (для входящих сообщений).Я реализую конечный автомат (да, в одном методе большого действия), который может обрабатывать различные команды.Ответы отправляются непосредственно с этого контроллера, а также с моделей, которыми управляют мои контроллеры.Из-за этого у меня появились дублированные шаблоны SMS-сообщений и путаница относительно того, откуда именно пришло сообщение.

Как мне это сделать?Должны ли входящие SMS-сообщения анализироваться и обрабатываться в собственной модели?В настоящее время у меня нет модели SMS - просто контроллер SMS.Или, что вы предлагаете?

Если это имеет значение, я планирую переписать свое приложение, используя CakePHP.

Ответы [ 2 ]

3 голосов
/ 05 февраля 2012

Я разработал несколько приложений ZF, использующих Twilio.Я склонен либо использовать их вспомогательную библиотеку PHP в контроллере, либо (если это что-то отличное от простого приложения) заключить их помощника в класс обслуживания: Application_Service_SMS.

В этот момент отправляется SMSв контроллере должно выглядеть так:

$sms->send($from, $to, $body); //$sms is a service object of the twilio lib

Но это только отправная часть вопроса, как вы получаете $body?Поскольку вы работаете в среде MVC, я бы предложил разделить два слоя (модель и представление), как вы это делали бы в любой другой точке.

Если модель определяет содержание сообщения, выполните в контроллере что-то вроде этого:

$this->view->model = $model;
$body = $this->view->render('sms/' . $command . '.phtml'); 

Вам нужно убедиться, что тело меньше 160 символов (или разделенона что и отправлять несколько сообщений).И вы сделали SMS-сообщение редактируемым, не меняя модель (поскольку сообщение действительно является частью слоя представления).

И поскольку с Twilio вы можете отправлять SMS-сообщения как часть TwiML голосового вызова, вытакже можно повторно использовать этот шаблон сообщения следующим образом:

//inside a TwiML script
<Sms>
  <?php echo $this->partial('sms/cmd.phtml', array('model' => $this->model)); ?>
</Sms>
1 голос
/ 05 февраля 2012

Часть приложения, которая должна отвечать за отправку, получение данных, является моделью.

Что делать с ними, когда они правильно проанализированы, - это то, о чем должен заботиться контроллер. Я рассмотрел более длинный ответ, но это ответ на ваши вопросы ... Если у вас есть какие-либо подвопросы, пожалуйста, задавайте в комментариях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...