Closed Djag07 closed 10 months ago
Добрый день, я не все методы в данной библиотеке использую в своей работе, поэтому не понимаю о каком методе вопрос. По идее все должно быть на месте, если метод был описан в протофайле.
Можно ссылку на метод из этой документации? https://developer.kontur.ru/Docs/diadoc-api/index.html
Добрый день! Я имею в виду например метод ShelfUpload https://developer.kontur.ru/Docs/diadoc-api/http/ShelfUpload.html
Мне нужно загружать документы и отправлять через Diadoc. У вашего коллеги были методы generateSignedContentFromFile и ShelfUpload. Они позволяют либо положить документ "на полку", а уже потом работать с ним (например, прикреплять к письму), либо непосредственно получать содержимое файла и аттачить его к письму.
Да, понял. Нашел сейчас о чем разговор.
ShelfUpload
- этот метод не реализован. В протофайле есть описание, сгененрирован даже php класс для него.
generateSignedContentFromFile
- в работе он пока мне нужен был и там была какая - то зависимость для подписывания файла, она мне была не нужна. Пришлось от нее избавиться.
Сегодня я не могу заняться добавлением данных методов. Можете вы сами его добавить если срочно. Если нет, то могу на выходных заняться данным вопросом.
Было бы классно, если бы вы добавили. Мне нужнее generateSignedContentFromFile все же. Удобнее отправлять документы сразу же, минуя хранение "на полке". Я планирую использовать ваш api в работе и не хочется внедряться в чужой код) По поводу метода с подписыванием действительно все сложно. Я просто закомментил $signedContent->setSignature($this->signerProvider->sign($content)); в методе generateSignedContent по сути отключив тем самым подпись контента.
Обновил библиотеку, добавил новый тег. Я не смог нормально проверить как работает подписание, т.к. надо очень хитро настроить openssl чтобы поддерживался формат по ГОСТу Загрузка на полку должна работать, мне выдало 200, большего АПИ диадока не умеет возвращать Подписание будет работать, если у вас настроен OpenSsl.
Если надо уметь отключать подписание , то скажите, добавлю костыль
Спасибо за помощь! Если вы планируете поддерживать библиотеку в дальнейшем и, возможно, обновлять, то добавьте, пожалуйста, отключение подписания. Если нет, я сам могу добавить.
У меня еще есть небольшой вопрос. У вашего коллеги в классе MessageToPost были методы добавления документов к письму (например addSupplementaryAgreements и другие), правда и версия protobuf была более старая. Как в вашей либе можно прикрепить аттач? В MessageToPost вижу только геттеры и сеттеры.
addSupplementaryAgreements
- надо ссылку на документацию, где этот метод описан. Может он просто устаревший и потому в новой версии отсутствует.
Вообще эта либа была мною скопирована для нужд проекта, я использую лишь несколько методов, все остальное я даже не проверял на работоспособность.
Еще у меня вопрос - если использовать generateSignedContentFromFile
без пописи, то диадок нормально принимает данные? Не ругается?
Мы планировали использовать дидадок, но потом переключились на https://kontur.ru/logistika Это новый сервис и немного более адекватный. Так что может Вам не нужен ДИАДОК?
Почитал еще раз документацию. Действительно, структура SupplementaryAgreementAttachment считается устаревшей. Сейчас рекомендуется генерировать аттачи через универсальный как-будто бы DocumentAttachment.
По вопросу - у меня задача не отправлять документы контрагентам, очевидно, что они не отправятся без подписи, а просто сохранять сообщение с аттачем в исходящих при отправке. А потом кто-то уже будет их подписывать вручную в диадоке и отправлять. Поэтому в данном случае реализация подписи избыточна. Диадок не ругается.
По третьему моменту - к сожалению задача именно с Диадоком интеграцию настроить. Тем более, что компания не транспортная.
Посмотрите файл MessageTest
там тестируется метод для отправки сообщений.
В него можно прикреплять просто файл, может он поможет.
Файл не подписанный.
Сам по себе метод метод generateSignedContent
без подписи не делает ничего. Он просто создает объект с контентом.
Так что не вижу смысла его как - то править, если просто не нужна подпись.
$postObject = new MessageToPost();
$postObject->setFromBoxId(getenv(ConfigNames::FROM_BOX_ID));
$postObject->setToBoxId(getenv(ConfigNames::TO_BOX_ID));
$xml = file_get_contents(dirname(__DIR__, 1) . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . 'ECN.xml');
$content = new SignedContent();
$content->setContent($xml);
$attachment = new DocumentAttachment();
$attachment->setSignedContent($content);
$attachment->setTypeNamedId(DocumentType::name(DocumentType::LogisticsWaybill));
$postObject->setDocumentAttachments([$attachment]);
/** @var \Diadoc\Proto\Events\Message $response */
$response = $api->getApi()->postMessage($postObject);
Добрый день! Подскажите пожалуйста, как используя ваш api можно отправить документ в письме контрагенту или хотя бы положить его на полку? Я не могу найти соответствующие методы загрузки документа в Диадок, которые были в либе, которую вы брали за основу. Заранее спасибо и простите за беспокойство.