semantic.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # -*- coding: utf-8 -*-
  2. from __future__ import absolute_import, unicode_literals
  3. from optionaldict import optionaldict
  4. from library.wechatpy.client.api.base import BaseWeChatAPI
  5. class WeChatSemantic(BaseWeChatAPI):
  6. def search(self,
  7. query,
  8. category,
  9. uid=None,
  10. latitude=None,
  11. longitude=None,
  12. city=None,
  13. region=None):
  14. """
  15. 发送语义理解请求
  16. 详情请参考
  17. http://mp.weixin.qq.com/wiki/0/0ce78b3c9524811fee34aba3e33f3448.html
  18. :param query: 输入文本串
  19. :param category: 需要使用的服务类型,多个可传入列表
  20. :param uid: 可选,用户唯一id(非开发者id),用户区分公众号下的不同用户(建议填入用户openid)
  21. :param latitude: 可选,纬度坐标,与经度同时传入;与城市二选一传入
  22. :param longitude: 可选,经度坐标,与纬度同时传入;与城市二选一传入
  23. :param city: 可选,城市名称,与经纬度二选一传入
  24. :param region: 可选,区域名称,在城市存在的情况下可省;与经纬度二选一传入
  25. :return: 返回的 JSON 数据包
  26. 使用示例::
  27. from wechatpy import WeChatClient
  28. client = WeChatClient('appid', 'secret')
  29. res = client.semantic.search(
  30. '查一下明天从北京到上海的南航机票',
  31. 'flight,hotel',
  32. city='北京'
  33. )
  34. """
  35. if isinstance(category, (tuple, list)):
  36. category = ','.join(category)
  37. data = optionaldict()
  38. data['query'] = query
  39. data['category'] = category
  40. data['uid'] = uid
  41. data['latitude'] = latitude
  42. data['longitude'] = longitude
  43. data['city'] = city
  44. data['region'] = region
  45. data['appid'] = self._client.appid
  46. return self._post(
  47. url='https://api.weixin.qq.com/semantic/semproxy/search',
  48. data=data
  49. )