Example #1
0
    def test_voice_reply_properties(self):
        from wechatpy.replies import VoiceReply

        reply = VoiceReply(voice='7890')

        self.assertEqual('7890', reply.voice)
        self.assertEqual('7890', reply.media_id)

        reply.media_id = '123456'
        self.assertEqual('123456', reply.voice)
        self.assertEqual('123456', reply.media_id)
Example #2
0
def index():
    if request.method == 'GET':
        return request.args.get('echostr')
    xml = request.get_data().decode()
    print(xml)
    msg = parse_message(xml)
    if msg.type == 'text':
        media_id = upload(msg.content)
        reply = VoiceReply(media_id=media_id, message=msg)
        return reply.render()
    return ''
Example #3
0
    def test_voice_reply_properties(self):
        from wechatpy.replies import VoiceReply

        reply = VoiceReply(voice="7890")

        self.assertEqual("7890", reply.voice)
        self.assertEqual("7890", reply.media_id)

        reply.media_id = "123456"
        self.assertEqual("123456", reply.voice)
        self.assertEqual("123456", reply.media_id)
Example #4
0
    def test_voice_reply_properties(self):
        from wechatpy.replies import VoiceReply

        reply = VoiceReply(voice='7890')

        self.assertEqual('7890', reply.voice)
        self.assertEqual('7890', reply.media_id)

        reply.media_id = '123456'
        self.assertEqual('123456', reply.voice)
        self.assertEqual('123456', reply.media_id)
def echo_server():
    error = None
    if request.method == 'GET':
        # The WeChat server will issue a GET request in order to verify the chatbot backend server upon configuration.
        return verify_backend(request)

    elif request.method == 'POST':
        # Messages will be POSTed from the WeChat server to the chatbot backend server,
        message = parse_message(request.data)
        print(message)
        if message.type == 'text':
            reply = TextReply(content=message.content, message=message)
        elif message.type == 'image':
            reply = VoiceReply(media_id=message.media_id, message=message)
        elif message.type == 'voice':
            reply = VoiceReply(media_id=message.media_id, message=message)
        return reply.render()
Example #6
0
def wechat(request):
    if request.method == 'GET':
        signature = request.GET.get('signature', None)
        timestamp = request.GET.get('timestamp', None)
        nonce = request.GET.get('nonce', None)
        echostr = request.GET.get('echostr', None)


        try:
            check_signature(WECHAT_TOKEN, signature, timestamp, nonce)
        except InvalidSignatureException:
            echostr = 'error'

        return HttpResponse(echostr)

    elif request.method == 'POST':
        msg = parse_message(request.body)
        print(msg)
        # if msg.type == 'text':
        #     if msg.content == '民事案件':
        #         reply = getDogLossList(request, msg)
        #     elif msg.content == '刑事案件':
        #         reply = getDogOwnerList(request, msg)
        #     else:
        #         reply = TransferCustomerServiceReply(message=msg)
        # code = request.POST.get('code',None)
        # print(code,1111111111)
        if msg.type == 'image':
            reply = ImageReply(message=msg)
            reply.media_id = msg.media_id
        elif msg.type == 'voice':
            reply = VoiceReply(message=msg)
            reply.media_id = msg.media_id
            reply.content = '语音信息'
        elif msg.type == 'event':
            print('eventkey=', msg.event)
            if msg.event == 'subscribe':
                print(333333333333)
                saveWxLaw(msg.source)
                reply = create_reply('感谢您关注【辽宁大潮律师事务所】', msg)
            elif msg.event == 'unsubscribe':
                reply = create_reply('取消关注公众号', msg)
                unSubUserinfo(msg.source)
            elif msg.event == 'subscribe_scan':
                reply = create_reply('感谢您关注【辽宁大潮律师事务所】', msg)
                saveWxLaw(msg.source, msg.scene_id)
                print('scene_id=', msg.scene_id)
            elif msg.event == 'scan':
                print('scan====', msg.scene_id)
                # setUserToMember(msg.source, msg.scene_id)
                reply = create_reply('', msg)
            else:
                reply = create_reply('view', msg)

        response = HttpResponse(reply.render(), content_type="application/xml")
        return response
Example #7
0
def wechat(request):
    if request.method == 'GET':
        signature = request.GET.get('signature', None)
        timestamp = request.GET.get('timestamp', None)
        nonce = request.GET.get('nonce', None)
        echostr = request.GET.get('echostr', None)

        try:
            check_signature(settings.WECHAT_TOKEN, signature, timestamp, nonce)
        except InvalidSignatureException:
            echostr = 'error'

        return HttpResponse(echostr)

    elif request.method == 'POST':
        msg = parse_message(request.body)
        if msg.type == 'text':
            reply = TransferCustomerServiceReply(message=msg)
        elif msg.type == 'image':
            reply = ImageReply(message=msg)
            reply.media_id = msg.media_id
        elif msg.type == 'voice':
            reply = VoiceReply(message=msg)
            reply.media_id = msg.media_id
            reply.content = '语音信息'
        elif msg.type == 'event':
            print('eventkey=', msg.event)
            if msg.event == 'subscribe':
                saveUserinfo(msg.source)
                reply = create_reply('你好,欢迎关注亚电新能源', msg)
            elif msg.event == 'unsubscribe':
                reply = create_reply('取消关注公众号', msg)
                unSubUserinfo(msg.source)
            elif msg.event == 'subscribe_scan':
                reply = create_reply('你好,欢迎关注亚电新能源', msg)
                saveUserinfo(msg.source, msg.scene_id)
            elif msg.event == 'scan':
                reply = create_reply('', msg)
            else:
                reply = create_reply('view', msg)
        else:
            reply = create_reply('', msg)

        response = HttpResponse(reply.render(), content_type="application/xml")
        return response
Example #8
0
 def on_post(self, req, resp):
     # 猜测是打开数据流
     xml = req.stream.read()
     # 解析xml格式数据
     msg = parse_message(xml)
     if msg.type == 'text':
         reply = TextReply(content='露露我爱你',
                           message=msg)  # content=msg.content
         xml = reply.render()
         resp.body = (xml)
         resp.status = falcon.HTTP_200
     elif msg.type == 'image':
         reply = ImageReply(media_id=msg.media_id, message=msg)
         xml = reply.render()
         resp.body = (xml)
         resp.status = falcon.HTTP_200
     elif msg.type == 'voice':
         reply = VoiceReply(media_id=msg.media_id, message=msg)
         xml = reply.render()
         resp.body = (xml)
         resp.status = falcon.HTTP_200
Example #9
0
    def post(self, request):
        xml = request.body
        msg = parse_message(xml)
        if msg.type == 'text':
            # 获取文本内容
            try:
                content = msg.content
                # print(res)
                # print(json.dump(res))
                reply = TextReply(content=content, message=msg)
                r_xml = reply.render()
                # 获取唯一标记用户的openid,下文介绍获取用户信息会用到
                openid = msg.source
                # print(openid)
                return HttpResponse(r_xml)
            except Exception as e:
                # 自行处理
                return HttpResponse('success')
            # return HttpResponse('')
        elif msg.type == 'image':
            print(msg.image, msg.media_id)
            reply = ArticlesReply(message=msg)

            reply.add_article({
                'title': 'Welcome tom my channel!',
                'description': 'Finally, we meet you here,\nYou must know you are very important for us!',
                'image': msg.image,
                'url': 'https://baidu.com'
            })
            r_xml = reply.render()
            return HttpResponse(r_xml)
        elif msg.type == 'voice':
            print(msg.format, msg.recognition)
            reply = VoiceReply(media_id=msg.media_id, message=msg)
            return HttpResponse(reply.render())
        elif msg.type == 'video':
            print(msg)
            print(msg.media_id, msg.thumb_media_id)
            reply = VideoReply(media_id=msg.media_id, title='Test video', description='Description', message=msg)

            return HttpResponse(reply.render())
        elif msg.type == 'location':
            print(msg.location_x, msg.location_y, msg.scale, msg.label, msg.location)
            return HttpResponse('Success')

        elif msg.type == 'event':
            # print(msg.type)
            if msg.event == 'subscribe':
                try:
                    reply = TextReply(content='Welcome to my channel', message=msg)
                    r_xml = reply.render()
                    return HttpResponse(r_xml)
                except:
                    return HttpResponse('Success')
            elif msg.event == 'unsubscribe':
                try:
                    reply = TextReply(content='See you again!', message=msg)
                    r_xml = reply.render()
                    return HttpResponse(r_xml)
                except:
                    return HttpResponse('Success')
            elif msg.event == 'subscribe_scan':
                try:
                    print(msg.scene_id, msg.ticket)
                    reply = TextReply(content='See you again!', message=msg)
                    r_xml = reply.render()
                    return HttpResponse(r_xml)
                except:
                    return HttpResponse('Success')
            elif msg.event == 'scan':
                try:
                    print(msg.scene_id, msg.ticket)
                    reply = TextReply(content='See you again!', message=msg)
                    r_xml = reply.render()
                    return HttpResponse(r_xml)
                except:
                    return HttpResponse('Success')
            elif msg.event == 'location':
                try:
                    print(msg.latitude, msg.longitude, msg.precision)
                    reply = TextReply(content='See you again!', message=msg)
                    r_xml = reply.render()
                    return HttpResponse(r_xml)
                except:
                    return HttpResponse('Success')
            elif msg.event == 'click':
                try:
                    print(msg.key)
                    reply = TextReply(content=msg.key, message=msg)
                    r_xml = reply.render()
                    return HttpResponse(r_xml)
                except:
                    return HttpResponse('Success')
            elif msg.event == 'view':
                try:
                    print(f'{msg.url}\n=========')
                    reply = TextReply(content=msg.url, message=msg)
                    r_xml = reply.render()
                    return HttpResponse(r_xml)
                except:
                    return HttpResponse('Success')
Example #10
0
def handle_wx(request):
    if request.method == 'GET':
        signature = request.GET.get('signature', '')
        timestamp = request.GET.get('timestamp', '')
        nonce = request.GET.get('nonce', '')
        echo_str = request.GET.get('echostr', '')
        try:
            check_signature(token, signature, timestamp, nonce)
        except InvalidSignatureException:
            echo_str = '错误的请求'
        response = HttpResponse(echo_str)
        # client = WeChatClient("wx058a1e6adf42dede", "d4631adb81c598c1f9acddfb4bc2ba10")
        # menu = client.menu.get()
        # print(menu)
        return response
    elif request.method == 'POST':
        xml = request.body
        msg = parse_message(xml)
        openid = msg.source
        try:
            if msg.type == 'text':
                reply = TextReply(content=msg.content, message=msg)
                print(msg.content)
                return HttpResponse(reply.render())
            elif msg.type == 'image':
                print(msg.media_id)
                reply = ImageReply(media_id=msg.media_id, message=msg)
                return HttpResponse(reply.render())
            elif msg.type == 'voice':
                print(msg.media_id)
                reply = VoiceReply(media_id=msg.media_id, message=msg)
                return HttpResponse(reply.render())
            elif msg.type == 'video':
                print(msg)
                reply = VideoReply(media_id=msg.media_id,
                                   thumb_media_id=msg.thumb_media_id,
                                   title='title',
                                   description='description',
                                   message=msg)
                print(reply)
                print(msg.media_id)
                return HttpResponse(reply.render())
            elif msg.type == 'music':
                print(msg.thumb_media_id, msg.title, msg.description)
                reply = MusicReply(thumb_media_id=msg.thumb_media_id,
                                   title='title',
                                   description='description',
                                   music_url=msg.music_url,
                                   hq_music_url=msg.hq_music_url,
                                   message=msg)
                return HttpResponse(reply.render())
            # elif msg.type == 'news':
            #         reply = ArticlesReply(message=msg, articles=[
            #             {
            #                 'title': u'标题1',
            #                 'description': u'描述1',
            #                 'url': u'http://www.qq.com',
            #             },
            #             {
            #                 'title': u'标题2',
            #                 'description': u'描述2',
            #                 'url': u'http://www.qq.com',
            #                 'image': 'http://img.qq.com/1.png',
            #             },
            #         ])
            #         # 继续添加
            #         reply.add_article({
            #             'title': u'标题3',
            #             'description': u'描述3',
            #             'url': u'http://www.qq.com',
            #         })
            #         r_xml = reply.render()
            #         return HttpResponse(r_xml)
            elif msg.type == 'event':
                push = ScanCodeWaitMsgEvent(msg)
                #获取二维码信息,字符串
                content = msg.scan_result
                print(content)
                # 如何处理,自行处理,回复一段文本或者图文
                reply = TextReply(content="Someting", message=msg)
                r_xml = reply.render()
                return HttpResponse(r_xml)
            #pass
        except Exception as e:
            print("Exception:", e)
            return "success"
    return HttpResponse('ok')
Example #11
0
    def on_post(self,req,resp):
        #后台接受数据进行xml解析
        xml=req.stream.read()
        msg=parse_message(xml)
        print(msg)

        dict={}
        for name in dir(msg):
            value = getattr(msg, name)
            if not name.startswith('__') and not callable(value) and not name.startswith('_'):
                dict[name] = value
        print(dict)
        #print(type(dict))
        #对文本的处理
        if dict['type']=='text':
            ser=search()
            result,spaceCount,isChinese=ser.main(dict['content'])
            print(result)
            #print(spaceCount)

            # src = result_text['translateResult'][0][0]['src']
            tgt = result['translateResult'][0][0]['tgt']
            type=result['type']
            print("\ntgt:"+tgt)
            print(type)
            if spaceCount==0 and not isChinese:
                print("te")
                re_str=''
                if type == 'en2zh-CHS':
                    if "smartResult" in result:
                        re = result['smartResult']['entries']
                        while '' in re:
                            re.remove('')
                        while '  \r\n' in re:
                            re.remove('  \r\n')
                        re_str = ''.join(re[0:])
                    #print(re_str)
                    ret="基本解释\n"+tgt+"\n更多解释\n"+re_str
                else:
                    ret=tgt
                    if type == 'fr2zh-CHS':
                        ret = "法语,翻译--->" + tgt
                    elif type == 'de2zh-CHS':
                        ret = "德语,翻译--->" + tgt
            else:
                ret=tgt
                if type=='fr2zh-CHS':
                    ret="法语,翻译--->"+tgt
                elif type=='de2zh-CHS':
                    ret="德语,翻译--->"+tgt
            print(ret)
            reply=TextReply(content=ret,message=msg)
            xml=reply.render()
            resp.body=(xml)
            resp.status=falcon.HTTP_200
        #对图片的处理
        elif dict['type']=='image':
            print ("hello world5")
            reply = ImageReply(media_id=msg.media_id, message=msg)
            xml = reply.render()
            resp.body = (xml)
            resp.status = falcon.HTTP_200
        #对事件的处理
        elif dict['type']=='event':
            if dict['event']=='subscribe':
                print("欢迎关注")
                reply = TextReply(content="欢迎关注,这是一个翻译小平台,",message=msg)
                xml = reply.render()
                resp.body = (xml)
                resp.status = falcon.HTTP_200
        #对音频的处理
        elif dict['type']=='voice':
                reply = VoiceReply(media_id=msg.media_id,message=msg)
                xml = reply.render()
                resp.body = (xml)
                resp.status = falcon.HTTP_200
Example #12
0
def wechatHome(request):
    # get signature, timestamp and nonce
    signature = request.GET.get('signature')
    timestamp = request.GET.get('timestamp')
    nonce = request.GET.get('nonce')
    encrypt_type = request.GET.get('encrypt_type')
    msg_signature = request.GET.get('msg_signature')

    try:
        check_signature(TOKEN, signature, timestamp, nonce)
        if request.method == 'GET':
            response = request.GET.get('echostr')
            return HttpResponse(response, content_type="application/json")

# POST request
        if encrypt_type != None:
            # encryption mode
            print("request is encrypt")
            from wechatpy.crypto import WeChatCrypto
            crypto = WeChatCrypto(TOKEN, AES_KEY, APPID)
            try:
                # now msg is xml
                msg = crypto.decrypt_message(request.body, msg_signature,
                                             timestamp, nonce)
            except (InvalidSignatureException, InvalidAppIdException):
                HttpResponseBadRequest("decrypt message error")
        else:
            msg = request.body
        # plaintext mode
        print("before parse_message")
        pprint.pprint(msg)
        msg = wechatpy.parse_message(msg)
        print("after parse_message")
        pprint.pprint(msg)
        if msg.type == 'text':  # text message
            reply = TextReply(message=msg)
            reply.content = 'text reply'
        elif msg.type == 'image':
            reply = ImageReply(message=msg)
            reply.media_id = msg.media_id
        elif msg.type == 'voice':
            reply = VoiceReply(message=msg)
            reply.media_id = 'voice media id'
        elif msg.type == 'video':
            reply = VideoReply(message=msg)
            reply.media_id = 'video media id'
            reply.title = 'video title'
            reply.description = 'video description'
        elif msg.type == 'music':
            reply = MusicReply(message=msg)
            reply.thumb_media_id = 'thumb media id'
            reply.title = 'music title'
            reply.description = 'music description'
            reply.music_url = 'music url'
            reply.hq_music_url = 'hq music url'
        elif msg.type == 'news':
            reply = ArticlesReply(message=msg,
                                  articles=[
                                      {
                                          'title': u'标题1',
                                          'description': u'描述1',
                                          'url': u'http://www.qq.com',
                                      },
                                  ])
        else:
            reply = create_reply('Sorry, can not handle this for now', msg)
        return HttpResponse(reply.render(), content_type="application/json")
    except InvalidSignatureException as e:
        print("check_signature failed")
        HttpResponseBadRequest(e)