首页 > 解决方案 > 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:期望值'''

标签: pythondynamics-crmdynamics-365

解决方案


如果您希望使用 Dynamics Crm webapi,您需要在 azure AD 中注册应用并分配适当的权限。然后您将获得 Appid 使用您可以调用 API 并执行操作。有关于这一切的好视频。这是链接https://youtu.be/Td7Bk3IXJ9s


推荐阅读