我开发了多个使用Twilio的ZF应用程序.我倾向于在控制器中使用他们的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
<?php echo $this->partial('sms/cmd.phtml', array('model' => $this->model)); ?>