![]() |
Powershell_поиск одинаковых значений массива
Добрый день.
Через сервис рассылки отправляются текстовые уведомления о заказе. они доставляется/(не доставлены/просмотрены/...) в каналы: sms/viber/vk Имеется .txt файл, содержащий уникальные mid отправленного информационного сообщения. Для проверки статуса читаю файл, беру оттуда mid, отправляю в foreach и методом Invoke-RestMethod делаю запрос на получения статуса имеющихся mid Пример ответа сервера по каждой строке: PS C:\WINDOWS\system32> $a log : {@{_id=5e46429b2a955d000be61afa; status=query; when=2020-02-13T07:00:05.978Z}} mid : 17a4b6b5-0bb9-4557-916f-f0775839d474 lastStatusUpdate : 2020-02-13T07:03:14.499Z status : delivered code : 7 channel : sms type : primary code может принимать 5 значений, channel может принимать 3. Итого 15 разных вариантов Начал считать с цикле (проверка по 2-м условиям) но явно это не рационально для всех комбинаций Как вариант - вижу отправить $a.channel+ " " +$a.status в текстовый файл и там посчитать совпадения, но тоже как-то "костыльно" Как правильно подсчитать количество полученных ответов в комбинации code+channel, чтобы было примерно так: channel code count sms 7 2 sms 6 4 viber 7 10 ................. |
Цитата:
|
Цитата:
Код Название статуса Описание статуса 10 interact Взаимодействие пользователя с сообщением (нажата кнопка, отправлено ответное сообщение). Возможен только для акцептированных контактов. 9 seen Сообщение прочитано 7 delivered Сообщение доставлено 6 undelivered Сообщение не удалось доставить 5 expired Время ожидания доставки сообщения истекло возможные значения параметра channel: sms/viber/vk т.о. для sms-возможны статусы 7,6,5 для viber/vk - возможны все 5 статусов Итого 13 комбинаций. Перебирать if/elseif мне думается сложно и запутанно, да еще и счетчики каждой итерации... |
Я имел в виду этих вариантов, чтобы было что импортировать:
Код:
log : {@{_id=5e46429b2a955d000be61afa; status=query; when=2020-02-13T07:00:05.978Z}} |
Цитата:
Скрытый текст
Код:
log : {@{_id=5e466d132a955d000be83ac1; status=delivered; when=2020-02-14T06:31:14.471Z}, @{_id=5e466d132a955d000be83ac0; status=query; when=2020-02-14T06:30:14.719Z}} Я беру txt-файл(лог отправки), в нем каждый mid отправляю на проверку статуса - получаю ответ. Задача: сделать статистику по каналам доставки и статусу |
А сервер это возвращает как простой текст?
|
Цитата:
Код:
$a= Invoke-RestMethod -Uri "https://sd.flomni.com/status/?data=+$($find[0])" -ContentType "application/json; charset=utf-8" -Headers $headers_voice -Method Get Код:
PS C:\WINDOWS\system32> $a Код:
PS C:\WINDOWS\system32> $a.GetType() В файле допустим 100 mid. Хочу посчитать, сколько из них доставлены, в какие каналы и какой статус последний. |
Формируете массив из ответов сервера на каждый mid, а потом что-то вроде
Код:
$array |group channel,code -NoElement |
Цитата:
Получается до foreach я создаю пустой массив. Затем в цикле каждый ответ, в моем случае $a, добавляю в массив. После окончания цикла вывожу $array. Верно понимаю решение? |
Цитата:
|
DJ Mogarych,
Спасибо, все получилось |
Время: 02:05. |
Время: 02:05.
© OSzone.net 2001-