python - Python 和 Dynamics CRM:使用 Web api
问题描述
我想开始使用 Python 从我们的 CRM 数据创建电子邮件警报。我知道 Dynamics365 有一些警报功能,但我想做更多。理想情况下,我想使用 CRM api。我正在尝试运行以下代码,并收到一条错误消息。
这是我在这方面的第一次开始。我没有 Azure,我希望找到一个解决方案,让我只使用 API 和登录信息提取 CRM 数据。
import requests
from requests_ntlm import HttpNtlmAuth
import json
username = 'username'
userpassword = 'password'
#set these values to query your crm data
crmwebapi = 'API URL'
crmwebapiquery = '/contacts?$select=fullname,contactid'
crmrequestheaders = {
'OData-MaxVersion': '4.0',
'OData-Version': '4.0',
'Accept': 'application/json',
'Content-Type': 'application/json; charset=utf-8',
'Prefer': 'odata.maxpagesize=500',
'Prefer': 'odata.include-
annotations=OData.Community.Display.V1.FormattedValue'
}
print('making crm request . . .')
crmres = requests.get(crmwebapi+crmwebapiquery,
headers=crmrequestheaders,auth=HttpNtlmAuth(username,userpassword))
print('crm response received . . .')
try:
print('parsing crm response . . .')
crmresults = crmres.json()
for x in crmresults['value']:
print (x['fullname'] + ' - ' + x['contactid'])
except KeyError:
print('Could not parse CRM results')
'''
看起来它正在成功连接 - 但没有为 crm.results 返回“值”?
runfile('F:/CRM/python CRM query.py', wdir='F:/CRM') 发出 crm 请求。. . 收到 crm 响应。. . 解析 crm 响应。. . 回溯(最近一次通话最后):
文件“”,第 1 行,在 runfile('F:/CRM/python CRM query.py', wdir='F:/CRM')
文件“C:\Users\Gittel\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py”,第 786 行,运行文件 execfile(文件名,命名空间)
文件“C:\Users\Gittel\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py”,第 110 行,在 execfile exec(compile(f.read(), filename, ' exec'), 命名空间)
文件“F:/CRM/python CRM query.py”,第 26 行,在 crmresults = crmres.json()
文件“C:\Users\Gittel\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\models.py”,第 897 行,在 json 中返回 complexjson.loads(self.text, **kwargs)
文件“C:\Users\Gittel\AppData\Local\Continuum\anaconda3\lib\json__init__.py”,第 348 行,加载返回 _default_decoder.decode(s)
文件“C:\Users\Gittel\AppData\Local\Continuum\anaconda3\lib\json\decoder.py”,第 337 行,在解码 obj 中,end = self.raw_decode(s, idx=_w(s, 0)。结尾())
文件“C:\Users\Gittel\AppData\Local\Continuum\anaconda3\lib\json\decoder.py”,第 355 行,在 raw_decode 中引发 JSONDecodeError("Expecting value", s, err.value) from None
JSONDecodeError:期望值'''
解决方案
如果您希望使用 Dynamics Crm webapi,您需要在 azure AD 中注册应用并分配适当的权限。然后您将获得 Appid 使用您可以调用 API 并执行操作。有关于这一切的好视频。这是链接https://youtu.be/Td7Bk3IXJ9s
推荐阅读
- arrays - 如何在 couchbase 存储桶中插入字符串数组值记录?
- angular - 角度 4 中的 $location.search() 是什么
- flutter - async_provider.dart 中的 StreamProvider._ 构造函数有什么好处?
- api - 什么是制裁筛选?
- c++ - 在没有初始化的情况下,shared_ptr 如何在 C++ 中工作
- python - 通过 DateTimeIndex 在 pandas 数据框中进行多项选择
- java - Swagger custom documentation
- python - Tensorflow-gpu and Textgenrnn version incompatibility on Windows 10: ModuleNotFoundError: No module named 'tensorflow.contrib'
- php - AJAX Form refreshing page when using move_uploaded_file()
- kotlin - 为什么 kotlin 不允许空安全索引运算符?