Example #1
0
 def get_contact_client(self, account):
     '''
     取得client
     :param account:
     :return:
     '''
     return WeChatClient(account.corp, account.account_secret)
Example #2
0
 def bind(self):
     for user in self:
         client = WeChatClient(user.account.corp_id,
                               user.account.corpsecret)
         try:
             wechat_user_info = client.user.get(user.login)
         except WeChatClientException:
             wechat_user_info = None
         if wechat_user_info:
             val = {
                 'state': 'bind',
                 'name': wechat_user_info.get('name', None),
                 'job': wechat_user_info.get('position', None),
                 'mobile': wechat_user_info.get('mobile', None),
                 'email': wechat_user_info.get('email', None),
                 'wechat_login': wechat_user_info.get('weixinid', None),
             }
             user.write(val)
         else:
             client.user.create(user_id=user.login,
                                name=user.name,
                                department=1,
                                position=user.job,
                                mobile=user.mobile,
                                email=user.email,
                                weixin_id=user.wechat_login)
             user.state = 'bind'
Example #3
0
def send_message(
    touser=None,
    content=None,
    msg_type="text",
    toparty=None,
    totag=None,
    **kwargs,
):
    secret = get_config("wework")
    CORPID, CORPSECRET, APPID = secret.split(":")
    agentid = int(APPID)
    api = WeChatClient(CORPID, CORPSECRET)
    message = dict(
        agent_id=agentid,
        user_ids=touser,
        content=content,
        party_ids=toparty,
        tag_ids=totag,
    )

    if msg_type == "text":
        ret = api.message.send_text(**message)
    elif msg_type == "markdown":
        ret = api.message.send_markdown(**message)
    else:
        raise Exception("unsupported message type")
    return ret
Example #4
0
 def api_login(self, **kwargs):
     '''
     移动端登录
     :param kwargs:
     :return:
     '''
     # 获取用户信息
     account_code = kwargs['serial']
     agent_id = kwargs['agentID']
     app = request.env["funenc.wechat.apps"].sudo().search(
         [('app_agent', '=', agent_id),
          ('account_id.code', '=', account_code)],
         limit=1)
     client = WeChatClient(app.account_id.corp, app.app_secret)
     wx_userid = client.oauth.get_user_info(kwargs['code'])
     request.session['auth_code'] = kwargs['code']
     password = {'model': 'wechat', 'auth_code': kwargs['code']}
     authenticate = request.session.authenticate(request.session.db,
                                                 wx_userid['UserId'],
                                                 password)
     if authenticate is False:
         return '该用户不在系统用户列表中'
     else:
         session_info = request.env['ir.http'].session_info()
         _logger.info(
             dict(errcode=0,
                  msg='',
                  data={'token': session_info['session_id']}))
         return json.dumps(
             dict(errcode=0,
                  msg='',
                  data={'token': session_info['session_id']}))
Example #5
0
def get_client(corp_id, secret):
    """
    :param corp_id: 企业微信公司Id
    :param secret: 对应的秘钥(比如通讯录、自建应用...)
    :return: 企业微信客户端实例
    """
    return WeChatClient(corp_id, secret)
Example #6
0
    def write_wechat_account(self):
        if self.env['ir.config_parameter'].get_param('wechat.sync') == 'True':
            for user in self:
                client = WeChatClient(user.account.corp_id,
                                      user.account.corpsecret)
                # is user exist
                wechat_user_info = client.user.get(user.login)
                # if exist, update
                remote_val = {
                    'name':
                    user.name if user.name else wechat_user_info.get('name'),
                    'position':
                    user.job if user.job else wechat_user_info.get('position'),
                    'mobile':
                    user.mobile
                    if user.mobile else wechat_user_info.get('mobile'),
                    'email':
                    user.email
                    if user.email else wechat_user_info.get('email'),
                    'weixin_id':
                    user.wechat_login
                    if user.wechat_login else wechat_user_info.get('weixinid'),
                    'department': [d.id for d in user.departments] or [1],
                }

                local_values = remote_val.copy()
                local_values['job'] = local_values['position']
                local_values['wechat_login'] = local_values['weixin_id']

                client.user.update(user_id=user.login, **remote_val)
                user.with_context(is_no_wechat_sync=True).write(local_values)
Example #7
0
def address_client():
    """
    返回用于通讯录的客户端实例
    :return:
    """
    corp_id = request.env['ir.config_parameter'].sudo().get_param('weixin_ent_base.ent_wx_corp_id')
    secret = request.env['ir.config_parameter'].sudo().get_param('weixin_ent_base.ent_wx_ab_secret')
    return WeChatClient(corp_id, secret, session=mem_storage)
Example #8
0
 def get_access_client():
     key = 'client'
     if cache.has_key(key):
         client = cache.get(key)
     else:
         client = WeChatClient(corp_id, app_secret)
         cache.set(key, client)
     return client
Example #9
0
    def unlink(self):
        for user in self:
            if user.state == 'bind':
                client = WeChatClient(user.account.corp_id,
                                      user.account.corpsecret)
                client.user.delete(user_id=user.login)

        res = super(WechatUser, self).unlink()
        return res
Example #10
0
 def unbind(self):
     for user in self:
         if user.state == 'bind':
             client = WeChatClient(user.account.corp_id,
                                   user.account.corpsecret)
             try:
                 client.user.delete(user_id=user.login)
             except WeChatClientException, e:
                 _logger.error(e)
         user.state = 'unbind'
Example #11
0
class WechatWork(viewsets.ViewSet):
    """微信企业号相关认证服务"""
    client = WeChatClient(
        settings.WECHAT_WORK_CONFIG['CORP_ID'],
        settings.WECHAT_WORK_CONFIG['SECRET'],
    )

    @swagger_auto_schema(operation_summary='获取微信企业号登录链接')
    @action(detail=False)
    def get_authorize_url(self, request):
        return Response({
            'url': self.client.oauth.authorize_url('/oauth/wechat_work/login_callback')
        })

    @swagger_auto_schema(operation_summary='微信企业号登录回调')
    @action(detail=False)
    def authorize_redirect_uri(self, request: HttpRequest):
        code = request.GET.get('code', None)
        print(f'wechat code={code}')
        return Response({'code': code})

    @swagger_auto_schema(operation_summary='通过code登录',
                         manual_parameters=[
                             openapi.Parameter(name='code', in_=openapi.IN_QUERY,
                                               description='从微信企业号服务器获取到的code', type=openapi.TYPE_STRING)
                         ])
    @action(detail=False)
    def login_by_code(self, request: HttpRequest):
        code = request.GET.get('code', None)
        try:
            user_info = self.client.oauth.get_user_info(code)
        except Exception as e:
            raise APIException(detail=e)

        phone = user_info['UserId']
        is_created_user = False

        if User.objects.filter(username=phone).exists():
            user_obj: User = User.objects.get(username=phone)
        else:
            is_created_user = True
            user_obj: User = User.objects.create_user(username=phone, password=phone)

        # 记录Django登录状态
        login(request, user_obj)
        # 生成drf token
        token, created = Token.objects.get_or_create(user=user_obj)

        return Response({
            'user_info': user_info,
            'successful': True,
            'is_created_user': is_created_user,
            'token': token.key,
            'detail': '登录成功',
        })
Example #12
0
def enterprise_payment(request, wrId):
    order = WithdrawOrder.objects.get(wrId=wrId)
    account = ThirdAccount.objects.get(user__userId=order.user.userId,
                                       accType=1)

    client = WeChatClient(settings.WECHAT_APPID, settings.WECHAT_SECRET)
    transfer = WeChatTransfer(client)

    result = transfer.transfer(account.accountNo, order.wrMoney * 100, '提现')

    return HttpResponse('success')
Example #13
0
 def invite(self):
     for user in self:
         client = WeChatClient(user.account.corp_id,
                               user.account.corpsecret)
         try:
             user.state = 'bind'
         except:
             user.state = 'unbind'
             raise ValidationError("%s hasn't been binded yet." % user.name)
         client.user.invite(user_id=user.login)
         user.state = "invited"
Example #14
0
 def sent_message(self):
     for message in self:
         user_ids = '|'.join([u.login for u in message.users])
         try:
             client = WeChatClient(message.account.corp_id, message.account.corpsecret)
             # TODO: all support
             client.message.send_text(message.application.application_id, user_ids, message.content)
             message.state = 'send'
         except Exception, e:
             message.state = 'fail'
             message.result = str(e)
             _logger.error(e)
 def create_wechat(self):
     if self.env['ir.config_parameter'].get_param('wechat.sync') == 'True':
         client = WeChatClient(self.account.corp_id,
                               self.account.corpsecret)
         client.department.create(name=self.name,
                                  parent_id=self.parent_id.id or 1,
                                  order=self.order,
                                  id=self.id)
         for user in self.users:
             client.user.update(user.login,
                                department=[d.id for d in user.departments]
                                or [1])
Example #16
0
 def create_wechat_account(self):
     if self.env['ir.config_parameter'].get_param('wechat.sync') == 'True':
         client = WeChatClient(self.account.corp_id,
                               self.account.corpsecret)
         client.user.create(user_id=self.login,
                            name=self.name,
                            department=[d.id for d in self.departments]
                            or [1],
                            position=self.job,
                            mobile=self.mobile,
                            email=self.email,
                            weixin_id=self.wechat_login)
 def unlink_wechat(self):
     if self.env['ir.config_parameter'].get_param('wechat.sync') == 'True':
         for department in self:
             client = WeChatClient(department.account.corp_id,
                                   department.account.corpsecret)
             for user in department.users:
                 client.user.update(
                     user.login,
                     department=[
                         d.id
                         for d in user.departments if d.id != department.id
                     ] or [1])
             client.department.delete(department.id)
Example #18
0
 def write(self, vals):
     res = super(WechatUser, self).write(vals)
     for user in self:
         if user.state == 'bind':
             client = WeChatClient(user.account.corp_id,
                                   user.account.corpsecret)
             client.user.update(user_id=user.login,
                                name=user.name,
                                department=1,
                                position=user.job,
                                mobile=user.mobile,
                                email=user.email,
                                weixin_id=user.wechat_login)
     return res
Example #19
0
    def get_client_by_app(self, code, agent_id):
        '''
        :param code:
        :param agent_id:
        :return:
        '''
        account = self.search([('code', '=', code)])
        if account:
            app = self.env['funenc.wechat.apps'].sudo()\
                .search([('account_id', '=', account.id), ('app_agent', '=', agent_id)])
            if app:
                return WeChatClient(app.account_id.corp, app.app_secret)

        return None
Example #20
0
 def __init__(self,
              name='huobi',
              webhook=None,
              agent_id=None,
              secret=None,
              company_id=None):
     self.name = name
     # 机器人webhook
     self.webhook = read_secret("wechat",
                                "notechats",
                                "huobi",
                                name,
                                "webhook",
                                value=webhook)
     # 应用ID
     self.agent_id = read_secret("wechat",
                                 "notechats",
                                 "huobi",
                                 name,
                                 "agent_id",
                                 value=agent_id)
     # 企业ID
     self.company_id = read_secret("wechat",
                                   "notechats",
                                   "huobi",
                                   name,
                                   "company_id",
                                   value=company_id)
     # 应用Secret
     self.secret = read_secret("wechat",
                               "notechats",
                               "huobi",
                               name,
                               "secret",
                               value=secret)
     self.client = WeChatClient(corp_id=self.company_id, secret=self.secret)
Example #21
0
def response_message(xml, request=None):
    msg = parse_message(xml)
    log.debug('>>> source:{},target:{}, msg.type:{}'.format(
        msg.source, msg.target, msg.type))
    client = WeChatClient(APPID, SECRET)
    user_dict = client.user.get(msg.source)
    userpk = user_dict.get('email') or user_dict.get('userid')
    user = User.objects.filter(email=userpk).first()
    # client.message.send_text( msg.agent ,msg.source, 'user:{}'.format(user))
    # log.debug('>>> user:{}'.format(user))
    if msg.type == 'text':
        if re.match(r'.*(想)|(建议)', msg.content):
            Requirement.objects.get_or_create(email=userpk,
                                              content=msg.content)
            req_counts = Requirement.objects.filter(email=userpk).count()
            reply = TextReply(content='您的想法和建议我们已经收到({})'.format(req_counts),
                              message=msg)
            return reply.render()
        content = '''现在我还不会聊天
但我会记录您提出的想法和建议
试着输入“...想...”或“...建议...” '''

        reply = TextReply(content=content, message=msg)
        return reply.render()
        # log.debug('>>> response:{}'.format(response))
    elif msg.type == 'event':
        log.debug('>>> msg.event:{}'.format(msg.event))
        if msg.event == 'subscribe':
            return login_url(request, user_dict, client, userpk)
        if msg.event == 'location':
            log.debug('>>> msg:{}'.format(msg))
            return add_location(user, msg.id, msg.latitude, msg.longitude,
                                msg.precision)
        if msg.event == 'click':
            log.debug('>>> msg.key:{}'.format(msg.key))
            if msg.key == 'login':
                return login_url(request, user_dict, client, userpk)
            elif msg.key == 'get_available_cars':
                return get_available_cars(user)
            elif msg.key == 'my_location_his':
                return get_location_his(user)
    elif msg.type == 'location':
        return add_location(user, msg.id, msg.location_x, msg.location_y,
                            msg.scale, msg.label)

    reply = create_reply('')
    return reply.render()
Example #22
0
 def login_free(self):
     '''
     企业微信免登入口
     :return: 跳转
     '''
     apps = request.env['funenc.wechat.apps'].sudo().search(
         [('is_exempts', '=', True)], limit=1)
     if len(apps) == 0:
         return '没有设置免登默认企业应用'
     corpid = apps.account_id.corp
     corpsecret = apps.app_secret
     if corpid is False or corpsecret is False:
         return '没有填写企业应用信息/没有填写可信域名'
     client = WeChatClient(corpid, corpsecret)
     url = client.oauth.authorize_url(
         'http://' + request.httprequest.host.split(':')[0] +
         '/funenc_wechat/success_login_free_by_wechat')
     return http.redirect_with_hash(url)
Example #23
0
 def sent_msg(self):
     if not self.app_name:
         return False
     try:
         wx_conf = WxConf(app_name=self.app_name)
         client = WeChatClient(wx_conf.corp_id, wx_conf.Secret)
         print(client, 'client\n')
         print(self.get_title(), 'title')
         print('agent_id:', wx_conf.AgentId)
         print('url:', self.get_url())
         print('desc:', self.get_description())
         client.message.send_text_card(agent_id=wx_conf.AgentId,
                                       user_ids=self.user_ids,
                                       title=self.get_title(),
                                       description=self.get_description(),
                                       url=self.get_url())
         print('out')
     except Exception as e:
         print(e)
     return True
Example #24
0
 def success_login_by_wechat(self, **kwargs):
     '''
     免登成功后登录后台
     :param kwargs: dict类型,key值code对应value为传入的code
     :return:
     '''
     # 获取用户信息
     app = request.env["funenc.wechat.apps"].sudo().search(
         [("is_exempts", "=", True)], limit=1)
     client = WeChatClient(app.account_id.corp, app.app_secret)
     wx_userid = client.oauth.get_user_info(kwargs['code'])
     request.session['auth_code'] = kwargs['code']
     password = {'model': 'wechat', 'auth_code': kwargs['code']}
     authenticate = request.session.authenticate(request.session.db,
                                                 wx_userid['UserId'],
                                                 password)
     if authenticate is False:
         return '该用户不在系统用户列表中'
     else:
         return http.redirect_with_hash('/web')
Example #25
0
File: views.py Project: pbpoon/dda
 def sent_msg(self, obj=None):
     from action.models import WxConf
     if not self.app_name:
         return False
     try:
         wx_conf = WxConf(app_name=self.app_name)
         # print(wx_conf,'in')
         client = WeChatClient(wx_conf.corp_id, wx_conf.Secret)
         # print(client, '222')
         # print(self.get_title(obj), 'title')
         client.message.send_text_card(
             agent_id=wx_conf.AgentId,
             user_ids=self.user_ids,
             title=self.get_title(obj),
             description=self.get_description(obj),
             url=self.get_url(obj))
         # print('out')
     except Exception as e:
         pass
     return True
 def write_wechat(self, vals, department_old_user):
     if self.env['ir.config_parameter'].get_param('wechat.sync') == 'True':
         for department in self:
             client = WeChatClient(department.account.corp_id,
                                   department.account.corpsecret)
             client.department.update(department.id,
                                      name=department.name,
                                      parent_id=department.parent_id.id
                                      or 1,
                                      order=department.order)
             if 'users' in vals:
                 old_user = department_old_user[department]
                 new_user = [u.id for u in department.users]
                 need_update_users = self.env[
                     'odoosoft.wechat.enterprise.user'].browse(
                         list(set(new_user) ^ set(old_user)))
                 for user in need_update_users:
                     client.user.update(
                         user.login,
                         department=[d.id for d in user.departments] or [1])
Example #27
0
    def warpper(request, *args, **kwargs):
        client = WeChatClient(APPID, SECRET)
        code = request.GET.get('code', None)
        #url = client.oauth.authorize_url(request.build_absolute_uri())
        #log.debug('>>>auth get url:{} request.uri:{}'.format(url, request.build_absolute_uri()))
        if not code:
            return method(request, *args, **kwargs)
        try:
            user_info = client.oauth.get_user_info(code)
            userid = user_info.get('UserId')
            user_dict = client.user.get(userid)
            userpk = user_dict.get('email') or user_dict.get('userid')
            # user = User.objects.filter(email=userpk).first()
        except Exception as e:
            log.error('>>>Exception of oauth,errmsg:{},errcode:{}'.format(
                e.errmsg, e.errcode))
            # 这里需要处理请求里包含的 code 无效的情况
            return method(request, *args, **kwargs)
        if not userpk:
            return method(request, *args, **kwargs)

        if request.user.is_authenticated and request.user.email == userpk:
            log.debug(
                '>>>auth logged in already, user.email:{}'.format(userpk))
            return method(request, *args, **kwargs)
        else:
            log.debug('>>>auth not login user_info:{}'.format(userpk))
            user, created = User.objects.update_or_create(
                email=userpk, defaults=weixin_user_to_model(user_dict, client))
            token = Token.objects.filter(email=userpk).first()
            if not token:
                token = Token.objects.create(email=userpk)
            user = auth.authenticate(uid=token.uid)
            log.debug('>>>auth user authenticated:{}'.format(user))
            if user:
                auth.login(request, user)

        return method(request, *args, **kwargs)
class WeChatClientTestCase(unittest.TestCase):
    corp_id = '123456'
    secret = '123456'

    def setUp(self):
        self.client = WeChatClient(self.corp_id, self.secret)

    def test_fetch_access_token(self):
        with HTTMock(wechat_api_mock):
            token = self.client.fetch_access_token()
            self.assertEqual('1234567890', token['access_token'])
            self.assertEqual(7200, token['expires_in'])
            self.assertEqual('1234567890', self.client.access_token)

    def test_get_wechat_ips(self):
        with HTTMock(wechat_api_mock):
            res = self.client.misc.get_wechat_ips()
            self.assertEqual(['127.0.0.1'], res)

    def test_department_create(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.create('Test')
            self.assertEqual(2, res['id'])

    def test_department_update(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.update(2, 'Test 1')
            self.assertEqual(0, res['errcode'])

    def test_department_delete(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.delete(2)
            self.assertEqual(0, res['errcode'])

    def test_department_get(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.get()
            self.assertEqual(2, len(res))

    def test_department_get_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.get_users(2)
            self.assertEqual(1, len(res))

    def test_tag_create(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.create('test')
            self.assertEqual('1', res['tagid'])

    def test_tag_update(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.update(1, 'test')
            self.assertEqual(0, res['errcode'])

    def test_tag_delete(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.delete(1)
            self.assertEqual(0, res['errcode'])

    def test_tag_get_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.get_users(1)
            self.assertEqual(1, len(res['userlist']))
            self.assertEqual(1, len(res['partylist']))

    def test_tag_add_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.add_users(1, [1, 2, 3])
            self.assertEqual(0, res['errcode'])

    def test_tag_delete_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.delete_users(1, [1, 2, 3])
            self.assertEqual(0, res['errcode'])

    def test_tag_list(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.list()
            self.assertEqual(2, len(res))

    def test_batch_invite_user(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.invite_user(
                'http://example.com',
                '123456',
                '123456',
                '123|456',
                [123, 456],
                (12, 34),
                ''
            )
            self.assertEqual(0, res['errcode'])

    def test_batch_sync_user(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.sync_user(
                'http://example.com',
                '123456',
                '123456',
                '12345678'
            )
            self.assertEqual(0, res['errcode'])

    def test_batch_replace_user(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.replace_user(
                'http://example.com',
                '123456',
                '123456',
                '12345678'
            )
            self.assertEqual(0, res['errcode'])

    def test_batch_replace_party(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.replace_party(
                'http://example.com',
                '123456',
                '123456',
                '12345678'
            )
            self.assertEqual(0, res['errcode'])

    def test_batch_get_result(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.get_result('123456')
            self.assertEqual(0, res['errcode'])
            self.assertEqual(1, res['status'])

    def test_jsapi_get_ticket(self):
        with HTTMock(wechat_api_mock):
            result = self.client.jsapi.get_ticket()
            self.assertEqual(
                'bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA',  # NOQA
                result['ticket']
            )
            self.assertEqual(7200, result['expires_in'])

    def test_jsapi_get_jsapi_signature(self):
        noncestr = 'Wm3WZYTPz0wzccnW'
        ticket = 'sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg'  # NOQA
        timestamp = 1414587457
        url = 'http://mp.weixin.qq.com?params=value'
        signature = self.client.jsapi.get_jsapi_signature(
            noncestr,
            ticket,
            timestamp,
            url
        )
        self.assertEqual(
            '0f9de62fce790f9a083d5c99e95740ceb90c27ed',
            signature
        )

    def test_user_convert_to_openid(self):
        with HTTMock(wechat_api_mock):
            res = self.client.user.convert_to_openid('zhangsan')
            self.assertEqual('oDOGms-6yCnGrRovBj2yHij5JL6E', res['openid'])
            self.assertEqual('wxf874e15f78cc84a7', res['appid'])

    def test_user_convert_to_user_id(self):
        with HTTMock(wechat_api_mock):
            user_id = self.client.user.convert_to_user_id(
                'oDOGms-6yCnGrRovBj2yHij5JL6E'
            )
            self.assertEqual('zhangsan', user_id)

    def test_upload_media(self):
        media_file = six.StringIO('nothing')
        with HTTMock(wechat_api_mock):
            media = self.client.media.upload('image', media_file)
            self.assertEqual('image', media['type'])
            self.assertEqual('12345678', media['media_id'])

    def test_material_get_count(self):
        with HTTMock(wechat_api_mock):
            res = self.client.material.get_count(1)
            self.assertEqual(37, res['total_count'])
            self.assertEqual(3, res['video_count'])
            self.assertEqual(10, res['voice_count'])
            self.assertEqual(12, res['image_count'])
            self.assertEqual(3, res['file_count'])
            self.assertEqual(6, res['mpnews_count'])

    def test_material_batchget_mpnews(self):
        with HTTMock(wechat_api_mock):
            res = self.client.material.batchget(1, 'mpnews')
            self.assertEqual('mpnews', res['type'])
            self.assertEqual(20, res['total_count'])
            self.assertEqual(3, res['item_count'])
            self.assertEqual(
                '2-G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu',
                res['itemlist'][0]['media_id']
            )

    def test_material_delete(self):
        media_id = '2-G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu'
        with HTTMock(wechat_api_mock):
            res = self.client.material.delete(1, media_id)
            self.assertEqual('deleted', res['errmsg'])

    def test_material_get_mpnews(self):
        media_id = '2-G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu'
        with HTTMock(wechat_api_mock):
            res = self.client.material.get_articles(1, media_id)
            self.assertEqual('mpnews', res['type'])
            self.assertEqual(
                '2-G6nrLmr5EC3MMb_-zK1dDdzmd0' +
                'p7cNliYu9V5w7o8K0HuucGBZCzw4HmLa5C',
                res['mpnews']['articles'][0]['thumb_media_id']
            )
            self.assertEqual(
                '2-G6nrLmr5EC3MMb_-zK1dDdzmd0' +
                'p7cNliYu9V5w7oovsUPf3wG4t9N3tE',
                res['mpnews']['articles'][1]['thumb_media_id']
            )

    def test_reraise_requests_exception(self):
        @urlmatch(netloc=r'(.*\.)?qyapi\.weixin\.qq\.com$')
        def _wechat_api_mock(url, request):
            return {'status_code': 404, 'content': '404 not found'}

        try:
            with HTTMock(_wechat_api_mock):
                self.client.material.get_count(1)
        except WeChatClientException as e:
            self.assertEqual(404, e.response.status_code)

    def test_shakearound_get_shake_info(self):
        with HTTMock(wechat_api_mock):
            res = self.client.shakearound.get_shake_info('123456')
            self.assertEqual(14000, res['page_id'])
            self.assertEqual('zhangsan', res['userid'])

    def test_service_get_provider_token(self):
        with HTTMock(wechat_api_mock):
            res = self.client.service.get_provider_token('provider_secret')

        self.assertEqual(7200, res['expires_in'])
        self.assertEqual('enLSZ5xxxxxxJRL', res['provider_access_token'])

    def test_service_get_login_info(self):
        with HTTMock(wechat_api_mock):
            res = self.client.service.get_login_info(
                'enLSZ5xxxxxxJRL',
                'auth_code'
            )

        self.assertTrue(res['is_sys'])
        self.assertTrue(res['is_inner'])

    def test_chat_create(self):
        with HTTMock(wechat_api_mock):
            res = self.client.chat.create(
                '1', 'chat', 'zhangsan', ['zhangsan', 'lisi', 'wangwu']
            )

        self.assertEqual(0, res['errcode'])

    def test_chat_get(self):
        with HTTMock(wechat_api_mock):
            chat = self.client.chat.get('235364212115767297')

        self.assertEqual('235364212115767297', chat['chatid'])
        self.assertEqual('zhangsan', chat['owner'])

    def test_chat_update(self):
        with HTTMock(wechat_api_mock):
            res = self.client.chat.update(
                '235364212115767297',
                'lisi',
                '企业应用中心',
                'zhangsan',
                ['zhaoli'],
                ['zhangsan']
            )

        self.assertEqual(0, res['errcode'])

    def test_chat_quit(self):
        with HTTMock(wechat_api_mock):
            res = self.client.chat.quit('235364212115767297', 'lisi')

        self.assertEqual(0, res['errcode'])

    def test_chat_clear_notify(self):
        with HTTMock(wechat_api_mock):
            res = self.client.chat.clear_notify('zhangsan', 'single', 'lisi')

        self.assertEqual(0, res['errcode'])

    def test_chat_set_mute(self):
        mute_list = [
            {'userid': 'zhangsan', 'status': 0},
            {'userid': 'lisi', 'status': 1},
        ]
        with HTTMock(wechat_api_mock):
            res = self.client.chat.set_mute(mute_list)

        self.assertEqual(0, res['errcode'])
        self.assertEqual(['zhangsan'], res['invaliduser'])

    def test_chat_send_text(self):
        with HTTMock(wechat_api_mock):
            res = self.client.chat.send_text(
                'zhangsan', 'single', 'lisi', 'hello'
            )

        self.assertEqual(0, res['errcode'])

    def test_chat_send_image(self):
        with HTTMock(wechat_api_mock):
            res = self.client.chat.send_image(
                'zhangsan', 'single', 'lisi', 'media_id'
            )

        self.assertEqual(0, res['errcode'])

    def test_chat_send_file(self):
        with HTTMock(wechat_api_mock):
            res = self.client.chat.send_file(
                'zhangsan', 'single', 'lisi', 'media_id'
            )

        self.assertEqual(0, res['errcode'])
Example #29
0
from __future__ import absolute_import, unicode_literals
from flask import Flask, request, abort, render_template
from wechatpy.enterprise.crypto import WeChatCrypto
from wechatpy.exceptions import InvalidSignatureException
from wechatpy.enterprise.exceptions import InvalidCorpIdException
from wechatpy.enterprise import parse_message, create_reply
from wechatpy.enterprise.replies import ImageReply
# import redis
import requests
import json
import config
from zabbix import ZabbixGraph
from wechatpy.enterprise.client.api.media import WeChatMedia
from wechatpy.enterprise import WeChatClient

client = WeChatClient(config.CorpId, config.Secret)

TOKEN = config.TOKEN
EncodingAESKey = config.EncodingAESKey
CorpId = config.CorpId

app = Flask(__name__)


#图灵机器人
def talks_robot(msg, ispuid=False):
    api_url = 'http://www.tuling123.com/openapi/api'
    apikey = config.turing_key
    if ispuid:
        data = {'key': apikey, 'info': msg.content, 'userid': msg.source}
    else:
Example #30
0
class WeChatClientTestCase(unittest.TestCase):
    corp_id = '123456'
    secret = '123456'

    def setUp(self):
        self.client = WeChatClient(self.corp_id, self.secret)

    def test_fetch_access_token(self):
        with HTTMock(wechat_api_mock):
            token = self.client.fetch_access_token()
            self.assertEqual('1234567890', token['access_token'])
            self.assertEqual(7200, token['expires_in'])
            self.assertEqual('1234567890', self.client.access_token)

    def test_get_wechat_ips(self):
        with HTTMock(wechat_api_mock):
            res = self.client.misc.get_wechat_ips()
            self.assertEqual(['127.0.0.1'], res)

    def test_department_create(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.create('Test')
            self.assertEqual(2, res['id'])

    def test_department_update(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.update(2, 'Test 1')
            self.assertEqual(0, res['errcode'])

    def test_department_delete(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.delete(2)
            self.assertEqual(0, res['errcode'])

    def test_department_get(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.get()
            self.assertEqual(2, len(res))

    def test_department_get_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.get_users(2)
            self.assertEqual(1, len(res))

    def test_tag_create(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.create('test')
            self.assertEqual('1', res['tagid'])

    def test_tag_update(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.update(1, 'test')
            self.assertEqual(0, res['errcode'])

    def test_tag_delete(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.delete(1)
            self.assertEqual(0, res['errcode'])

    def test_tag_get_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.get_users(1)
            self.assertEqual(1, len(res['userlist']))
            self.assertEqual(1, len(res['partylist']))

    def test_tag_add_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.add_users(1, [1, 2, 3])
            self.assertEqual(0, res['errcode'])

    def test_tag_delete_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.delete_users(1, [1, 2, 3])
            self.assertEqual(0, res['errcode'])

    def test_tag_list(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.list()
            self.assertEqual(2, len(res))
class WeChatClientTestCase(unittest.TestCase):
    corp_id = '123456'
    secret = '123456'

    def setUp(self):
        self.client = WeChatClient(self.corp_id, self.secret)

    def test_fetch_access_token(self):
        with HTTMock(wechat_api_mock):
            token = self.client.fetch_access_token()
            self.assertEqual('1234567890', token['access_token'])
            self.assertEqual(7200, token['expires_in'])
            self.assertEqual('1234567890', self.client.access_token)

    def test_get_wechat_ips(self):
        with HTTMock(wechat_api_mock):
            res = self.client.misc.get_wechat_ips()
            self.assertEqual(['127.0.0.1'], res)

    def test_department_create(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.create('Test')
            self.assertEqual(2, res['id'])

    def test_department_update(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.update(2, 'Test 1')
            self.assertEqual(0, res['errcode'])

    def test_department_delete(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.delete(2)
            self.assertEqual(0, res['errcode'])

    def test_department_get(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.get()
            self.assertEqual(2, len(res))

    def test_department_get_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.get_users(2)
            self.assertEqual(1, len(res))

    def test_tag_create(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.create('test')
            self.assertEqual('1', res['tagid'])

    def test_tag_update(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.update(1, 'test')
            self.assertEqual(0, res['errcode'])

    def test_tag_delete(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.delete(1)
            self.assertEqual(0, res['errcode'])

    def test_tag_get_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.get_users(1)
            self.assertEqual(1, len(res['userlist']))
            self.assertEqual(1, len(res['partylist']))

    def test_tag_add_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.add_users(1, [1, 2, 3])
            self.assertEqual(0, res['errcode'])

    def test_tag_delete_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.delete_users(1, [1, 2, 3])
            self.assertEqual(0, res['errcode'])

    def test_tag_list(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.list()
            self.assertEqual(2, len(res))

    def test_batch_invite_user(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.invite_user(
                'http://example.com',
                '123456',
                '123456',
                '123|456',
                [123, 456],
                (12, 34),
                ''
            )
            self.assertEqual(0, res['errcode'])

    def test_batch_sync_user(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.sync_user(
                'http://example.com',
                '123456',
                '123456',
                '12345678'
            )
            self.assertEqual(0, res['errcode'])

    def test_batch_replace_user(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.replace_user(
                'http://example.com',
                '123456',
                '123456',
                '12345678'
            )
            self.assertEqual(0, res['errcode'])

    def test_batch_replace_party(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.replace_party(
                'http://example.com',
                '123456',
                '123456',
                '12345678'
            )
            self.assertEqual(0, res['errcode'])

    def test_batch_get_result(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.get_result('123456')
            self.assertEqual(0, res['errcode'])
            self.assertEqual(1, res['status'])
Example #32
0
class HuoBiMessage:
    def __init__(self,
                 name='huobi',
                 webhook=None,
                 agent_id=None,
                 secret=None,
                 company_id=None):
        self.name = name
        # 机器人webhook
        self.webhook = read_secret("wechat",
                                   "notechats",
                                   "huobi",
                                   name,
                                   "webhook",
                                   value=webhook)
        # 应用ID
        self.agent_id = read_secret("wechat",
                                    "notechats",
                                    "huobi",
                                    name,
                                    "agent_id",
                                    value=agent_id)
        # 企业ID
        self.company_id = read_secret("wechat",
                                      "notechats",
                                      "huobi",
                                      name,
                                      "company_id",
                                      value=company_id)
        # 应用Secret
        self.secret = read_secret("wechat",
                                  "notechats",
                                  "huobi",
                                  name,
                                  "secret",
                                  value=secret)
        self.client = WeChatClient(corp_id=self.company_id, secret=self.secret)

    def send_msg(self, msg):
        self.check_token()
        data = {"msgtype": "text", "text": {"content": msg}}
        self.client.message.send(agent_id=self.agent_id,
                                 user_ids=['NiuLiangTao', 'GuoYe'],
                                 party_ids=['3'],
                                 msg=data)

        self.send_to_qywx(msg)

    def send_to_qywx(self, msg):
        headers = {'Content-Type': 'application/json'}
        data = {"msgtype": "text", "text": {"content": msg}}

        data = json.dumps(data)
        r = requests.post(url=self.webhook, headers=headers, data=data)

    def check_token(self):
        # 通行密钥
        access_token = None
        access_token = read_secret("wechat", "notechats", "huobi", self.name,
                                   "access_token")
        if not access_token:
            response = self.client.fetch_access_token()
            access_token = read_secret("wechat",
                                       "notechats",
                                       "huobi",
                                       self.name,
                                       "access_token",
                                       value=response['access_token'],
                                       expire_time=response['expires_in'])
            print(response)

        self.client.session.set(self.client.access_token_key, access_token)
        return access_token
class WeChatClientTestCase(unittest.TestCase):
    corp_id = "123456"
    secret = "123456"

    def setUp(self):
        self.client = WeChatClient(self.corp_id, self.secret)

    def test_fetch_access_token(self):
        with HTTMock(wechat_api_mock):
            token = self.client.fetch_access_token()
            self.assertEqual("1234567890", token["access_token"])
            self.assertEqual(7200, token["expires_in"])
            self.assertEqual("1234567890", self.client.access_token)

    def test_get_wechat_ips(self):
        with HTTMock(wechat_api_mock):
            res = self.client.misc.get_wechat_ips()
            self.assertEqual(["127.0.0.1"], res)

    def test_department_create(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.create("Test")
            self.assertEqual(2, res["id"])

    def test_department_update(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.update(2, "Test 1")
            self.assertEqual(0, res["errcode"])

    def test_department_delete(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.delete(2)
            self.assertEqual(0, res["errcode"])

    def test_department_get(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.get()
            self.assertEqual(2, len(res))

    def test_department_get_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.department.get_users(2)
            self.assertEqual(1, len(res))

    def test_tag_create(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.create("test")
            self.assertEqual("1", res["tagid"])

    def test_tag_update(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.update(1, "test")
            self.assertEqual(0, res["errcode"])

    def test_tag_delete(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.delete(1)
            self.assertEqual(0, res["errcode"])

    def test_tag_get_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.get_users(1)
            self.assertEqual(1, len(res["userlist"]))
            self.assertEqual(1, len(res["partylist"]))

    def test_tag_add_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.add_users(1, [1, 2, 3])
            self.assertEqual(0, res["errcode"])

    def test_tag_delete_users(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.delete_users(1, [1, 2, 3])
            self.assertEqual(0, res["errcode"])

    def test_tag_list(self):
        with HTTMock(wechat_api_mock):
            res = self.client.tag.list()
            self.assertEqual(2, len(res))

    def test_batch_invite_user(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.invite_user(
                "http://example.com", "123456", "123456", "123|456", [123, 456], (12, 34), ""
            )
            self.assertEqual(0, res["errcode"])

    def test_batch_sync_user(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.sync_user("http://example.com", "123456", "123456", "12345678")
            self.assertEqual(0, res["errcode"])

    def test_batch_replace_user(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.replace_user("http://example.com", "123456", "123456", "12345678")
            self.assertEqual(0, res["errcode"])

    def test_batch_replace_party(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.replace_party("http://example.com", "123456", "123456", "12345678")
            self.assertEqual(0, res["errcode"])

    def test_batch_get_result(self):
        with HTTMock(wechat_api_mock):
            res = self.client.batch.get_result("123456")
            self.assertEqual(0, res["errcode"])
            self.assertEqual(1, res["status"])

    def test_jsapi_get_ticket(self):
        with HTTMock(wechat_api_mock):
            result = self.client.jsapi.get_ticket()
            self.assertEqual(
                "bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",  # NOQA
                result["ticket"],
            )
            self.assertEqual(7200, result["expires_in"])

    def test_jsapi_get_jsapi_signature(self):
        noncestr = "Wm3WZYTPz0wzccnW"
        ticket = "sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg"  # NOQA
        timestamp = 1414587457
        url = "http://mp.weixin.qq.com?params=value"
        signature = self.client.jsapi.get_jsapi_signature(noncestr, ticket, timestamp, url)
        self.assertEqual("0f9de62fce790f9a083d5c99e95740ceb90c27ed", signature)

    def test_user_convert_to_openid(self):
        with HTTMock(wechat_api_mock):
            res = self.client.user.convert_to_openid("zhangsan")
            self.assertEqual("oDOGms-6yCnGrRovBj2yHij5JL6E", res["openid"])
            self.assertEqual("wxf874e15f78cc84a7", res["appid"])

    def test_user_convert_to_user_id(self):
        with HTTMock(wechat_api_mock):
            user_id = self.client.user.convert_to_user_id("oDOGms-6yCnGrRovBj2yHij5JL6E")
            self.assertEqual("zhangsan", user_id)

    def test_upload_media(self):
        media_file = six.StringIO("nothing")
        with HTTMock(wechat_api_mock):
            media = self.client.media.upload("image", media_file)
            self.assertEqual("image", media["type"])
            self.assertEqual("12345678", media["media_id"])

    def test_material_get_count(self):
        with HTTMock(wechat_api_mock):
            res = self.client.material.get_count(1)
            self.assertEqual(37, res["total_count"])
            self.assertEqual(3, res["video_count"])
            self.assertEqual(10, res["voice_count"])
            self.assertEqual(12, res["image_count"])
            self.assertEqual(3, res["file_count"])
            self.assertEqual(6, res["mpnews_count"])

    def test_material_batchget_mpnews(self):
        with HTTMock(wechat_api_mock):
            res = self.client.material.batchget(1, "mpnews")
            self.assertEqual("mpnews", res["type"])
            self.assertEqual(20, res["total_count"])
            self.assertEqual(3, res["item_count"])
            self.assertEqual("2-G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu", res["itemlist"][0]["media_id"])

    def test_material_delete(self):
        media_id = "2-G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu"
        with HTTMock(wechat_api_mock):
            res = self.client.material.delete(1, media_id)
            self.assertEqual("deleted", res["errmsg"])

    def test_material_get_mpnews(self):
        media_id = "2-G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu"
        with HTTMock(wechat_api_mock):
            res = self.client.material.get_articles(1, media_id)
            self.assertEqual("mpnews", res["type"])
            self.assertEqual(
                "2-G6nrLmr5EC3MMb_-zK1dDdzmd0" + "p7cNliYu9V5w7o8K0HuucGBZCzw4HmLa5C",
                res["mpnews"]["articles"][0]["thumb_media_id"],
            )
            self.assertEqual(
                "2-G6nrLmr5EC3MMb_-zK1dDdzmd0" + "p7cNliYu9V5w7oovsUPf3wG4t9N3tE",
                res["mpnews"]["articles"][1]["thumb_media_id"],
            )

    def test_reraise_requests_exception(self):
        @urlmatch(netloc=r"(.*\.)?qyapi\.weixin\.qq\.com$")
        def _wechat_api_mock(url, request):
            return {"status_code": 404, "content": "404 not found"}

        try:
            with HTTMock(_wechat_api_mock):
                self.client.material.get_count(1)
        except WeChatClientException as e:
            self.assertEqual(404, e.response.status_code)

    def test_shakearound_get_shake_info(self):
        with HTTMock(wechat_api_mock):
            res = self.client.shakearound.get_shake_info("123456")
            self.assertEqual(14000, res["page_id"])
            self.assertEqual("zhangsan", res["userid"])

    def test_service_get_provider_token(self):
        with HTTMock(wechat_api_mock):
            res = self.client.service.get_provider_token("provider_secret")

        self.assertEqual(7200, res["expires_in"])
        self.assertEqual("enLSZ5xxxxxxJRL", res["provider_access_token"])

    def test_service_get_login_info(self):
        with HTTMock(wechat_api_mock):
            res = self.client.service.get_login_info("enLSZ5xxxxxxJRL", "auth_code")

        self.assertTrue(res["is_sys"])
        self.assertTrue(res["is_inner"])

    def test_chat_create(self):
        with HTTMock(wechat_api_mock):
            res = self.client.chat.create("1", "chat", "zhangsan", ["zhangsan", "lisi", "wangwu"])

        self.assertEqual(0, res["errcode"])

    def test_chat_get(self):
        with HTTMock(wechat_api_mock):
            chat = self.client.chat.get("235364212115767297")

        self.assertEqual("235364212115767297", chat["chatid"])
        self.assertEqual("zhangsan", chat["owner"])

    def test_chat_update(self):
        with HTTMock(wechat_api_mock):
            res = self.client.chat.update("235364212115767297", "lisi", "企业应用中心", "zhangsan", ["zhaoli"], ["zhangsan"])

        self.assertEqual(0, res["errcode"])

    def test_chat_quit(self):
        with HTTMock(wechat_api_mock):
            res = self.client.chat.quit("235364212115767297", "lisi")

        self.assertEqual(0, res["errcode"])

    def test_chat_clear_notify(self):
        with HTTMock(wechat_api_mock):
            res = self.client.chat.clear_notify("zhangsan", "single", "lisi")

        self.assertEqual(0, res["errcode"])

    def test_chat_set_mute(self):
        mute_list = [{"userid": "zhangsan", "status": 0}, {"userid": "lisi", "status": 1}]
        with HTTMock(wechat_api_mock):
            res = self.client.chat.set_mute(mute_list)

        self.assertEqual(0, res["errcode"])
        self.assertEqual(["zhangsan"], res["invaliduser"])

    def test_chat_send_text(self):
        with HTTMock(wechat_api_mock):
            res = self.client.chat.send_text("zhangsan", "single", "lisi", "hello")

        self.assertEqual(0, res["errcode"])

    def test_chat_send_image(self):
        with HTTMock(wechat_api_mock):
            res = self.client.chat.send_image("zhangsan", "single", "lisi", "media_id")

        self.assertEqual(0, res["errcode"])

    def test_chat_send_file(self):
        with HTTMock(wechat_api_mock):
            res = self.client.chat.send_file("zhangsan", "single", "lisi", "media_id")

        self.assertEqual(0, res["errcode"])
Example #34
0
'''
@author: LoRexxar
@contact: [email protected]
@file: wechathandler.py
@time: 2020/9/24 15:27
@desc:

'''

from utils.log import logger
from wechatpy.enterprise import WeChatClient
from LSpider.settings import LOGHANDER_IS_OPEN_WEIXIN
from LSpider.settings import WECHAT_NOTICE, WECHAT_NOTICE_DEBUG

enterprise = WeChatClient(
    corp_id=WECHAT_NOTICE['corp_id'],
    secret=WECHAT_NOTICE['secret'],
)

enterprise_debug = WeChatClient(
    corp_id=WECHAT_NOTICE_DEBUG['corp_id'],
    secret=WECHAT_NOTICE_DEBUG['secret'],
)


def send_text(content):
    enterprise.message.send_text(
        agent_id=WECHAT_NOTICE['agent_id'],
        user_ids='guoyingqi0',
        tag_ids='',
        content=content,
        # title="HaoTian 实时监控警报"
 def setUp(self):
     self.client = WeChatClient(self.corp_id, self.secret)