overtrue / easy-sms

📲 一款满足你的多种发送需求的短信发送轮子
MIT License
3.15k stars 547 forks source link

[Question] Submail 的 Gateway 实现是否存在缺陷 #161

Closed Kuri-su closed 5 years ago

Kuri-su commented 5 years ago

场景:需要发送 国内和国际短信,主力使用 Qcloud ,使用 Submail 作为备用。

  1. Submail 的国内和国际短信需要使用不同的 ApiUrl、 ApiId、ApiKey,但是在网关中只对 ApiUrl 做了判断,而 ApiId 和 ApiKey 依旧是读取的固定的配置。

  2. SubmailGateway 中 template 是读取的 $message->getData($this)['project'] 作为 template,而在 QcloudGateway 则读取 $message->getTemplate($this) 。难以使用类似于下面的方式使用 submail 作为备份的短信发送服务

    App::get('easysms')->send($telephone, [
    'template' => 11111,
    'data' => [
        'balabala' => '123123',
    ]),
    ], ['qcloud','submail']);

望不惜赐教,感谢

overtrue commented 5 years ago

我看了一下 submail 的文档,好像变化挺大啊: https://www.mysubmail.com/chs/documents/developer/lnmpa4 这是改版了?

Kuri-su commented 5 years ago

最近才开始用 Submail,原来是改过 API 了么:grin:。。

overtrue commented 5 years ago

最近才开始用 Submail,原来是改过 API 了么😁。。

我是很久前看他们的 API 写的 gateway, 如果现在的 API 改了,可能我们需要做一个新的版本。

matteo-gz commented 5 years ago

场景:需要发送 国内和国际短信,主力使用 Qcloud ,使用 Submail 作为备用。

  1. Submail 的国内和国际短信需要使用不同的 ApiUrl、 ApiId、ApiKey,但是在网关中只对 ApiUrl 做了判断,而 ApiId 和 ApiKey 依旧是读取的固定的配置。
  2. SubmailGateway 中 template 是读取的 $message->getData($this)['project'] 作为 template,而在 QcloudGateway 则读取 $message->getTemplate($this) 。难以使用类似于下面的方式使用 submail 作为备份的短信发送服务
 App::get('easysms')->send($telephone, [
    'template' => 11111,
    'data' => [
        'balabala' => '123123',
    ]),
], ['qcloud','submail']);

望不惜赐教,感谢

请问你是怎么做兼容的,直接重写submail吗?

Kuri-su commented 5 years ago

场景:需要发送 国内和国际短信,主力使用 Qcloud ,使用 Submail 作为备用。

  1. Submail 的国内和国际短信需要使用不同的 ApiUrl、 ApiId、ApiKey,但是在网关中只对 ApiUrl 做了判断,而 ApiId 和 ApiKey 依旧是读取的固定的配置。
  2. SubmailGateway 中 template 是读取的 $message->getData($this)['project'] 作为 template,而在 QcloudGateway 则读取 $message->getTemplate($this) 。难以使用类似于下面的方式使用 submail 作为备份的短信发送服务
 App::get('easysms')->send($telephone, [
    'template' => 11111,
    'data' => [
        'balabala' => '123123',
    ]),
], ['qcloud','submail']);

望不惜赐教,感谢

请问你是怎么做兼容的,直接重写submail吗?

印象里好像是 就两段面条代码简单的处理了下...如果前面一段的 Qcloud的发送出问题就运行下面的...

overtrue commented 5 years ago

其实我的建议是将你系统你的每一条短信,写一个类,按我文档上面的继承 Message 基类,在每个类里动态判断当前应该返回什么 code, 返回什么 template,因为在发送时会传递当前网关信息过来。很多人会担心说这样要写很多类,好麻烦,但是真不会,你的一个系统短信类型其实就那么几种,几十种短信已经算吓人的了。

matteo-gz commented 5 years ago

其实我的建议是将你系统你的每一条短信,写一个类,按我文档上面的继承 Message 基类,在每个类里动态判断当前应该返回什么 code, 返回什么 template,因为在发送时会传递当前网关信息过来。很多人会担心说这样要写很多类,好麻烦,但是真不会,你的一个系统短信类型其实就那么几种,几十种短信已经算吓人的了。

谢谢回复。已经改了

overtrue commented 5 years ago

@inorme 不客气