SMS不从Observer.php发送给客户

时间:2018-01-25 08:11:21

标签: php api magento sms alert

当产品重新有货时,我需要向客户发送短信(使用任何SMS API)。

我已经重写 Mage_ProductAlert_Model_Observer 类,并在我的自定义模块的Observer.php文件中添加了SMS API,但它没有向客户发送短信。为什么呢?

此外,它仅显示两个客户详细信息,而不是所有订阅产品库存警报的客户。这是我的代码

Observer.php

    <?php

    class My_Alert_Model_ProductAlert_Observer
    {


        public function process()
        {

        $customer_stock_alerts = Mage::getModel('productalert/stock')
                            ->getCollection()
                            ->addStatusFilter(0)
                            ->setCustomerOrder();

        foreach ($customer_stock_alerts as $alert){

          $stock_back_product = $alert->getProductId();
          $current_product=Mage::getModel('catalog/product')->load($stock_back_product);
          $current_product_name = $current_product->getName();

          $customer_info = Mage::getModel('customer/customer')->load($alert->getCustomerId());
          $customer_name = $customer_info->getPrimaryBillingAddress()->getFirstname();
          $customer_mobile = $customer_info->getPrimaryBillingAddress()->getTelephone(); 

                $message = 0;


                $message = "Dear $customer_name, Product $current_product_name  is back in Stock";

                $message=urlencode($message);


$sendsms = "http://api.msg91.com/api/sendhttp.php?sender=MSGIND&route=4&mobiles=$customer_mobile&authkey=xxxxxxxxxxxxxxxxxxx&country=91&message=$message";


               file_get_contents($sendsms);     
        }


        }

        }

        ?>

config.xml中

<?xml version="1.0"?>
<config>
<modules>
<My_Alert>
<version>0.0.1</version>
</My_Alert>
</modules>
<global>
  <models>
    <my_alert>
      <class>My_Alert_Model</class>
    </my_alert>
  </models>
</global>
    <crontab>
        <jobs>
            <my_alert>
                <schedule>
                    <cron_expr>*/5 * * * *</cron_expr>
                </schedule>
                <run>
                    <model>my_alert_productalert/observer::process</model>
                </run>
            </my_alert>
        </jobs>
    </crontab>
    <frontend>
        <routers>
            <My_Alert_First>
                <use>standard</use>
                <args>
                    <module>My_Alert</module>
                    <frontName>my-alert</frontName>
                </args>
            </My_Alert_First>
        </routers>
    </frontend>    
</config>

任何人都可以分享这个问题吗?为什么短信不发送? 我正在使用Magento 1.9。

1 个答案:

答案 0 :(得分:0)

在Magento处理产品库存警报集合的方法。我们的客户拥有超过40,000名订户,超过30,000名正在等待状态从“缺货”更改为“有库存”。因此,当Magento尝试从表product_alert_stock加载40.000条记录到收集时,由于内存限制,php会失败。

我认为您没有使用您的扩展程序更改核心文件,link可以帮助您。