Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 18
1

Yandex api.directory.yandex.net создание почтового ящика

24.05.2018, 10:25. Просмотров 4310. Ответов 6
Метки нет (Все метки)


Добрый день.

Пишу скрипт для создания почтовых ящиков на Яндекс.Коннект с использованием API https://tech.yandex.ru/connect... t-docpage/

Запросить данные о существующих п.я. или отделах у меня получилось (пример для п.я.):
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Function Get-YandexConnectEmailList {
<# 
   https://tech.yandex.ru/connect/directory/api/concepts/users/read-users-list-docpage/
#>
    [CmdletBinding()]
    param(
        [string]$Token,
        [string]$FieldsToGet,
        [int]$page,
        [int]$per_page
    )
    if($Verbose){$VerbosePreference = "Continue"}
    $pddimpUrl = 'https://api.directory.yandex.net'
    $api = '/v6/users/?fields=id,name,email'
    $URL = "$pddimpUrl"+"$api"+",$FieldsToGet"
    $Headers = @{}
    $Headers.Authorization = 'OAuth ' + $Token
    $Body = @{}
        $Body.page = $page
    $Body.per_page = $per_page
    $InvokeWebRequest = Invoke-WebRequest -URI $URL -Method GET -Headers $Headers -Body $Body
    $InvokeWebRequest.Content | ConvertFrom-Json
    
}
А вот создать п.я. или отдел не получается.
Пробую так:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
cls
 
[string]$Token = "..."
 
$pddimpUrl = 'https://api.directory.yandex.net'
$api = '/v6/departments/'
$URL = "$pddimpUrl"+"$api"
$Headers = @{}
$Headers.Authorization = 'OAuth ' + $Token
 
$Body = @{}
$Body.description = 'Test_dept_descr'
$Body.name = 'Test_dept'
$Body.label = 'Test_dept_2'
$Body.parent_id = 1
 
$JHead = ConvertTo-Json $Headers
$JBody = ConvertTo-Json $Body
 
$InvokeWebRequest = Invoke-WebRequest -URI $URL -Method POST -Headers $Headers -Body $Body -ContentType 'Application/json'
$InvokeWebRequest.Content | ConvertFrom-Json
 
$Body = ''
$Headers = ''
Получаю ошибку:
PowerShell
1
2
3
4
5
6
Invoke-WebRequest : { "message": "Bad request", "code": "bad_request" }
строка:20 знак:21
+ ... ebRequest = Invoke-WebRequest -URI $URL -Method POST -Headers $Header ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Если из вызова командлета Invoke-WebRequest , убрать -ContentType 'Application/json', получаю другую ошибку:
PowerShell
1
2
3
4
5
6
Invoke-WebRequest : { "message": "Unhandled exception: {error}", "code": "unhandled_exception", "params": { "error": "error" } }
строка:20 знак:21
+ ... ebRequest = Invoke-WebRequest -URI $URL -Method POST -Headers $Header ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
С предыдущей версией Яндекс почты для домена (Yandex.PDD) проблем не возникало.

Буду рад любой помощи.
Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2018, 10:25
Ответы с готовыми решениями:

Экспорт содержимого почтового ящика в pst-файл
Доброго времени суток! Требуется помощь коллективного разума. Имеем Office 365, т.е. exchange...

Перенаправление почтового ящика на другой Exchange
Доброго дня. Прошу совета. Есть один Exchange (exc1.dc1). на него на даный момент приходят...

Не могу зайти на почтовые сервисы. Mail и Yandex
Извиняюсь если пишу не туда. Проблема заключается в том, что не могу зайти на почтовые сервисы....

(Yandex)Directory API / ASP.NET MVC
Доброго времени суток! Столкнулся с проблемой: Код получения данных от API Паспорт: ...

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы DevOps-инженеров
6
Покинул форум
2729 / 1060 / 290
Регистрация: 07.05.2015
Сообщений: 2,123
24.05.2018, 13:46 2
valen13, а с чего Вы решили что заголовки передаются как JSON? Параметр -Headers - это IDictionary.
0
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 18
24.05.2018, 14:02  [ТС] 3
В приведённых примерах я не использую $JHead.
0
772 / 421 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
24.05.2018, 14:19 4
valen13, Может быть в структуре запроса что-то поменялось?
Надо смотреть документацию к API
Беглым взглядом на документацию к этому методу вижу что в заголовке нужно передавать не только токен
Код
 headers = {
        'Authorization': 'OAuth ' + TOKEN,
        'User-Agent': USER_AGENT,
    }
Также вижу что в теле тоже передается немного другая структура, отличная от того что у вас в коде.
Код
payload = {
        'label': label,
        'name': name,
        'parent_id': parent_id,
    }
Но, это только беглый взгляд, лучше основательно прочитать документацию, и провести тесты.
0
Покинул форум
2729 / 1060 / 290
Регистрация: 07.05.2015
Сообщений: 2,123
24.05.2018, 14:29 5
Цитата Сообщение от valen13
Получаю ошибку:...
Исходя из ошибки (400) - "Один из параметров запроса имеет недопустимое значение или формат данных." v_svitere возможно прав, что может что-то поменялось в API, но скорее всего банально где-то затесалось нечто. А так как времени на изучение чего-то со стороны по не имеется, может кто другой поможет и подскажет.
0
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 18
24.05.2018, 18:39  [ТС] 6
PowerShell
1
$InvokeWebRequest = Invoke-WebRequest -URI $URL -Method POST -Headers $Headers -Body ($Body | ConvertTo-Json) -ContentType 'Application/json; charset=utf-8'
Эта строка всё решила.
Всем спасибо.
0
Garry Galler
26.05.2018, 01:50     Yandex api.directory.yandex.net создание почтового ящика
  #7

Не по теме:

Цитата Сообщение от valen13 Посмотреть сообщение
ConvertTo-Json
Ну да, примеры использования API только на python, а в python юзается human requests, в котором вручную практически ничего делать нужно (даже про многие заголовки можно забыть): передал словарь body в параметре json - и все само в json сконвертировалось :-) и заголовок Content-Type: 'application/json; charset=utf-8' автоматом ушел. Удобно...

0
26.05.2018, 01:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2018, 01:50
Привет! Вот еще темы с ответами:

Чем отличается http://yandex.ru и buki.yandex.ru
В чем особенность буки, для чего он служить. Что хотели до нас донести работники яндекса.

В чем различие Yandex от XML.Yandex
Собственно сабж... и адд: Различия порой бывают существенные в СЕРПе Яндекса и если обращаться к...

Yandex API
Добрый день форумчанам! Просьба откликнуться имеющим опыт в написании Яндекс API приложений. Ну...

Создание почтового ящика без обратного адрема
Доброго времени суток! Необходимо для работы создать ящик без обратного адреса, чтобы отвечать на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.