Добавьте расширения для контактов, используя Python и Microsoft Graph - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь добавить расширения к контактам с помощью Microsoft Graph, но получаю 500 ошибок назад.

Я думаю, что это связано с токеном, но я просто не могу его обработать.

Я перепробовал все методы, но ни один из них не работает, я могу выбрать между 400, 405 и 500 ошибками. Я предполагаю, что я близок, как только я сталкиваюсь с ошибкой 500.

Все разрешения правильны в пределах Azure.

В заголовке я попробовал следующее для токена:

token
token['access_token']
token['id_token']

Все три возвращают ошибку 500.

Я пробовал два способа добавить расширение, глобально для всех контактов и для одного контакта.

Один контакт (Я печатаю, чтобы увидеть ошибку):

def new_field(token,field):
    graph_client = OAuth2Session(token=token)
    contacts = graph_client.get('{}/me/contacts/'.format(graph_url))
    contacts = contacts.json()
    contacts = contacts['value']
    for contact in contacts:
        id = contact['id']
        url = '{}/me/contacts/{}/extensions'.format(graph_url,id)
        payload = {
            '@odata.type' : 'microsoft.graph.openTypeExtension',
            field : None   
        }

        headers = {
            'Authorization': 'Bearer, {}'.format(token),
            'Content-Type': 'application/json'
        }

   print(graph_client.post(url,data=json.dumps(payload),headers=headers))

Global:

def new_field(token,field):
    graph_client = OAuth2Session(token=token)
    url = '{}/me/contacts/'.format(graph_url)
    payload = {
        '@odata.type' : 'microsoft.graph.openTypeExtension',
        field : None   
    }

    headers = {
        'Authorization': 'Bearer, {}'.format(token),
        'Content-Type': 'application/json'
    }
    print(graph_client.post(url,data=json.dumps(payload),headers=headers))

Может кто-нибудь пролить свет на это?

У Microsoft нет документациикогда дело доходит до использования графика для контактов!

************************* ОБНОВЛЕНИЕ ***************************

Теперь я могу получить 201 созданный ответ!

Однако, похоже, он ничего не создает. ... есть ли задержка ?? Я также могу заставить это работать только по контактам, а не по всему миру.

вот код, который у меня сейчас есть:

def new_field(token,field):
    graph_client = OAuth2Session(token=token)
    contacts = graph_client.get('{}/me/contacts/'.format(graph_url))
    contacts = contacts.json()
    contacts = contacts['value']
    for contact in contacts:
        id = contact['id']
        url = '{}/me/contacts/{}/extensions/'.format(graph_url,id)
        payload = {
            '@odata.type' : 'microsoft.graph.openTypeExtension',
            'extensionName' : field,
            'value' : 'hello'
        }

        headers = {
            'authorization': 'bearer {}'.format(token),
            'Content-Type': 'application/json'
        }
        print(graph_client.post(url,data=json.dumps(payload),headers=headers))

1 Ответ

1 голос
/ 24 октября 2019

Добавление расширений происходит по каждому контакту. Невозможно создать расширение глобально и применить его ко всем контактам.

Нет задержки, расширение должно быть там немедленно. Вы должны использовать Graph, чтобы вернуть его, хотя, он не отображается ни в каком интерфейсе Outlook. Вы можете получить добавочный номер для определенного контакта, например:

GET /me/contacts/{contact-id}/extensions/{extension-name}

. Вы также можете попросить включить добавочный номер в результаты поиска при перечислении таких контактов, как:

GET /me/contacts?$expand=extensions($filter=id eq '{extension-name}')

У нас есть документация по контактам с графиком . Страница ресурса contact - хорошее место для начала. Graph Explorer также очень удобен для того, чтобы поиграть с этим материалом и почувствовать, как он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...