Виды событий - Сценарии ExtSdk2 — различия между версиями
(Новая страница: «<syntaxhighlight lang="python" line='line'> ole = win32com.client.Dispatch("Tensor.SbisPluginClientCOM") guid_module = ole.GetModule(name) query_id…») |
|||
Строка 1: | Строка 1: | ||
+ | == Пример функции обработки ответов от плагина == | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
Строка 37: | Строка 38: | ||
− | |||
− | + | == Примеры ответов от модуля == | |
− | |||
− | |||
=== Событие Message === | === Событие Message === |
Версия 09:53, 2 июня 2021
Содержание
Пример функции обработки ответов от плагина
ole = win32com.client.Dispatch("Tensor.SbisPluginClientCOM")
guid_module = ole.GetModule(name)
query_id = str(uuid.uuid4())
module_method = "ExtSdk2.AuthByPassword"
parameters_module_method = json.dumps({"Login": "login", "Password": "password"}, ensure_ascii=True)
domain = online.sbis.ru
CallMethodWithoutAuth( query_id, guid_module, module_method, parameters_module_method, domain )
answer = read_all_object( query_id )
session_id = answer[ 'Result' ]
def read_all_object( query_id ):
# Словарь с функциями обработки событий по типу
supported_events = {
'Message': parse_Message,
'Error': parse_Error,
'Event': parse_Event
}
json_string = ole.ReadAllObject()
events = json.loads(json_string)
for event in events:
event_type = event.get('type')
supported_events[event_type](event)
if( event[ 'queryID' ] == query_id )
return event[ 'data' ]
Примеры ответов от модуля
Событие Message
Событие типа Message содержит queryID вызываемого метода и результат работы в поле 'Result'.
{
'type': 'Message',
'queryID': '15e79572-b1be-4dc2-a0e9-3652ecb187c5',
'data': {
'Result': ...,
'Stat': ...
}
}
}
Событие Error
Событие типа Error содержит queryID вызываемого метода и объект ошибки в поле 'data'.
{
'type': 'Error',
'queryID': '15e79572-b1be-4dc2-a0e9-3652ecb187c5',
'data': {
'code': ...,
'detail': ...,
'dump': {},
'message': ...,
'method_name': 'ExtSdk2....',
...
}
}
Событие Error #ASYNC
{
'type': 'Error',
'queryID': 'b3e310ec-7d85-4026-bfad-228690f38d55',
'data': {
'code': 308,
'detail': '#ASYNC',
'dump': {},
'message': 'Ожидайте загрузки документа',
'method_name': 'ExtSdk2.WriteDocumentEx',
'stack': [
{
'method_name': 'AsyncUploadAttachments b3e310ec-7d85-4026-bfad-228690f38d55'
}
]
}
}
Событие Event
Событие типа Event содержит queryID вызываемого метода и имя события в поле 'eventName'.
{
'type': 'Event',
'data': {
'channelName': 'SbisPluginEvent',
'eventName': 'connected',
'type': 'object',
'data': ...
}
'queryID': '15e79572-b1be-4dc2-a0e9-3652ecb187c5'
}
Событие Event #ASYNC
{
'type': 'Event',
'data': {
'channelName': 'SbisPluginEvent',
'eventName': 'extsdk2.async.complete',
'type': 'object',
'data': {
'QueryId': '4fb98709-0264-4e01-a0aa-e4d30b4b65a7',
'Result': {...},
'Stat': {...}
}
}
}