gpt4 book ai didi

php - 在 MVC 应用程序中的何处包含 SMS 功能?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:39:33 24 4
gpt4 key购买 nike

我正计划重写一个使用 Zend FrameworkTwilio(用于发送和接收 SMS 消息)的应用程序。回顾过去,我认为我没有将所有 SMS 功能放在正确的位置。这给网站升级带来了困难。

目前,我有一个 SMS Controller 来处理来自 Twilio 的请求(用于传入消息)。我实现了一个可以处理各种命令的有限状态机(是的,在一个大 Action 方法中)。响应直接从这个 Controller 发送,也从我的 Controller 管理的模型发送。因此,我最终遇到了重复的 SMS 消息模板,并且对消息的确切来源感到困惑。

我应该怎么做?是否应该在自己的模型中解析和处理传入的 SMS 消息?目前,我没有 SMS 模型——只有 SMS Controller 。或者,您有什么建议?

如果重要的话,我打算使用 CakePHP 重写我的应用程序。

最佳答案

我开发了多个使用 Twilio 的 ZF 应用程序。我倾向于在 Controller 中使用他们的 PHP 帮助程序库,或者(如果它不是简单的应用程序)将他们的帮助程序包装在服务类中:Application_Service_SMS

此时,在 Controller 中发送 SMS 消息应该如下所示:

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

但这只是问题的发送部分,你如何获得$body?由于您在 MVC 框架中运行,我的建议是将两层(模型和 View )分开,就像您在任何其他点所做的那样。

如果模型决定消息的内容,在你的 Controller 中做这样的事情:

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

您必须确保正文少于 160 个字符(或以此为基础拆分并发送多条消息)。并且您已经在不更改模型的情况下使 SMS 消息可编辑(因为该消息实际上是 View 层的一部分)。

由于使用 Twilio,您可以将 SMS 消息作为语音通话 TwiML 的一部分发送,因此您还可以像这样重用该消息模板:

//inside a TwiML script
<Sms>
<?php echo $this->partial('sms/cmd.phtml', array('model' => $this->model)); ?>
</Sms>

关于php - 在 MVC 应用程序中的何处包含 SMS 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9143906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com