跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. OpenERP给合android手机SMS Gateway实现SMS(短信)发送

OpenERP给合android手机SMS Gateway实现SMS(短信)发送

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
9 帖子 6 发布者 10.4k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • W 离线
    W 离线
    winson97
    写于 最后由 编辑
    #1

    [b]最近完成了OpenERP与voip(总机)的融合,就想着把sms(短信)也弄起来,这样在OE中就可以给客户发送短信[/b]

    1、首先想到的是@重庆-mrshelly
    写的 openerp-android模块(lizijian 补充了发送功能),经测试一次最多只能发送140个字符(移动商规定一次只能发送70个汉字),如是英文数字每次都成功(自动截到140个字符),但如果有中文(即使不超过70个汉字)就不一定发送成功(短一点的中文可能正常,但找不到规律),估计可能是android_sl4a处理中文有问题。

    2、那就试试网上的短信平台:安装SMS Client模块后,注册了短信平台,发送英文没问题,但发送中文就有各种限制,自己手机能发送的正常业务短信,在设置-SMS Gateway--Message Queue查看状态为send,表示已经发送至短信平台,但在平台查看不到,在浏览器地址直接输入测试,返回代码表有“非法字符”,中国特色没办法,正常的短信也有非法字符!再试了另一个短信平台也是如此,只好放弃,手机能正常发送的短信,在短信平台不能发送,这个不靠谱!

    3、既然手机能发送,看来还是回到手机上靠谱,想想有没有在android上运行的sms Gateway?

    Google一查有,其中有一个 “中文版SMS Gateway”,此APP让Android手机变成一个短消息网关,下载安装,相应设置:
    [b]打开app界面如下,进入设置[/b]
    [img [检测到链接无效,已移除] /img]

    [b]在监听HTTP打勾,以便在OE上调用
    长短信打勾,短信再长也不担心[/b]!
    [img [检测到链接无效,已移除] /img]



    [b]点击HTTP设置[/b]
    [img [检测到链接无效,已移除] /img]

    [b]设置端口及密码,调用方法在下图有说明了。[/b]
    [img [检测到链接无效,已移除] /img]

    [b]返回到最开始界面,点击开始,这时sms gateway已运行,可能调用了。[/b]
    [img [检测到链接无效,已移除] /img]

    [b]进入OE作相应设置[/b]
    [img [检测到链接无效,已移除] /img]

    [b]这时就可以发送信息[/b]
    [img [检测到链接无效,已移除] /img]
    [img [检测到链接无效,已移除] /img]

    [b]在手机上可以查看LOG[/b]
    [img [检测到链接无效,已移除] /img]

    [b]最后SMS Client模块代码要作些修改:[/b]

                if gateway.method == 'http':
                    prms = {}
                    for p in data.gateway.property_ids:
                        if p.type == 'user':
                            prms[p.name] = p.value
                        elif p.type == 'password':
                            prms[p.name] = p.value
                        elif p.type == 'to':
                            prms[p.name] = data.mobile_to
                        elif p.type == 'sms':
                            print data.text
                            prms[p.name] = data.text.encode('utf-8')  [color=red]#原来是prms[p.name] = data.text 加上encode('utf-8') 以便能发送中文。否则运行到params = urllib.urlencode(prms) 进行地址编码会出错。[/color]

    [color=red]短信发送长度可以改成300[/color]


            for sms in queue_obj.browse(cr, uid, sids, context=context):
                if len(sms.msg) > 300:
                    error_ids.append(sms.id)
                    continue
                if sms.gateway_id.method == 'http':

    ........................

            queue_obj.write(cr, uid, sent_ids, {'state': 'send'}, context=context)
            queue_obj.write(cr, uid, error_ids, {
                                            'state': 'error',
                                            'error': 'Size of SMS should not be more then 300 char'
                                        }, context=context)


    ............................................................

    class HistoryLine(orm.Model):
        _name = 'sms.smsclient.history'
        _description = 'SMS Client History'

        _columns = {
            'name': fields.char('Description', size=160, required=True, readonly=True),
            'date_create': fields.datetime('Date', readonly=True),
            'user_id': fields.many2one('res.users', 'Username', readonly=True, select=True),
            'gateway_id': fields.many2one('sms.smsclient', 'SMS Gateway', ondelete='set null', required=True),
            'to': fields.char('Mobile No', size=15, readonly=True),
            'sms': fields.text('SMS', size=300, readonly=True),
        }



    [b]总结:[/b]
    1、android_sl4a发送中文短信有问题,但可以接收手机上的短信到OE中查看。
    2、网络短信平台,有各种限制,不灵活,客户收到的短信显示的发送号码也是太长,不友好。
    3、中文版SMS Gateway,发送短信没有长度限制,显示号码友好,OE的SMS Client可以查看发出的短信,但不能接收手机上的短信,这可以结合[b]重庆-mrshelly [/b]的模块接收手机的短信到OE上。

    1 条回复 最后回复
    0
    • P 离线
      P 离线
      pingwe
      写于 最后由 编辑
      #2

      马克~~~

      1 条回复 最后回复
      0
      • J 离线
        J 离线
        jerry79
        写于 最后由 编辑
        #3

        感谢楼主,Mark

        1 条回复 最后回复
        0
        • mrshellyM 离线
          mrshellyM 离线
          mrshelly
          写于 最后由 编辑
          #4

          赞..... 好东西............. 楼主应该将 apk 一并分享出来 就更棒了. 😛

          1 条回复 最后回复
          0
          • W 离线
            W 离线
            winson97
            写于 最后由 编辑
            #5

            补上apk:

            1 条回复 最后回复
            0
            • mrshellyM 离线
              mrshellyM 离线
              mrshelly
              写于 最后由 编辑
              #6

              鼓掌~~~~~~~~~~~~~~~~~~~~~~~~

              1 条回复 最后回复
              0
              • 1 离线
                1 离线
                10111101
                写于 最后由 编辑
                #7

                你好,请问下我用这个SMSclient发送短信时,它的状态一直是Queued,这是为什么哇,我也是按照短信平台商给的接口,填的相应的参数,求帮忙谢谢了

                1 条回复 最后回复
                0
                • R 离线
                  R 离线
                  rufeng1199
                  写于 最后由 编辑
                  #8

                  获益匪浅,学习了

                  1 条回复 最后回复
                  0

                  • 登录

                  • 没有帐号? 注册

                  • 登录或注册以进行搜索。
                  • 第一个帖子
                    最后一个帖子
                  0
                  • 版块
                  • 标签
                  • 热门
                  • 用户
                  • 群组