CallMethod — различия между версиями

Материал из razgovorov.ru
Перейти к: навигация, поиск
 
(не показаны 4 промежуточные версии этого же участника)
Строка 1: Строка 1:
 
== Описание ==
 
== Описание ==
Вызов методов модуля плагина c авторизацией( с имеющимся идентификатором сессии - '''account_id''' ). Предназначен для вызовов из интегрируемых систем, работающих с json-объектами.
+
Вызов методов модуля плагина c авторизацией( с имеющимся идентификатором сессии - '''session_id ''' ). Предназначен для вызовов из интегрируемых систем, работающих с json-объектами.
  
 
== Параметры ==
 
== Параметры ==
 
* {{Шаблон:ApiParam|query_id|1|строка|uuid для идентификации вызова метода}}
 
* {{Шаблон:ApiParam|query_id|1|строка|uuid для идентификации вызова метода}}
 
* {{Шаблон:ApiParam|guid_module|1|строка|uuid модуля полученный через GetModule()}}
 
* {{Шаблон:ApiParam|guid_module|1|строка|uuid модуля полученный через GetModule()}}
 +
* {{Шаблон:ApiParam|module_method |1|строка|Имя вызываемого метода модуля}}
 
* {{Шаблон:ApiParam|parameters_module_method|1|строка|json с параметрами, сериализованный в строку}}
 
* {{Шаблон:ApiParam|parameters_module_method|1|строка|json с параметрами, сериализованный в строку}}
 
* {{Шаблон:ApiParam|account_id|1|строка| идентификатором сессии, полученный при регистрации}}
 
* {{Шаблон:ApiParam|account_id|1|строка| идентификатором сессии, полученный при регистрации}}
 
== Результат ==
 
== Результат ==
Результат следует ожидать через вызов функции ReadAllObject()
+
Работа с ExtSdk2 осуществляется асинхронно, поэтому ответ следует ждать через вызов функции [[ReadAllObject|ReadAllObject]]. Более подробное о получении ответов и видах событий см. в статье [[Виды_событий_-_Сценарии_ExtSdk2|Виды событий]].
В результате должно прийти событие Message, у которого в Result лежит 'результат работы вызываемого метода
+
В результате должно прийти событие [[Виды_событий_-_Сценарии_ExtSdk2#Примеры ответов от модуля#Message|Message]], у которого в Result лежит 'результат работы вызываемого метода.
  
 
== Пример успешного вызова ==
 
== Пример успешного вызова ==
Строка 19: Строка 20:
  
 
CallMethod( query_id, guid_module, module_method, parameters_module_method, session_id )
 
CallMethod( query_id, guid_module, module_method, parameters_module_method, session_id )
 
</syntaxhighlight>
 
 
== Пример ответа ==
 
<syntaxhighlight lang="python" line='line'>
 
 
    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' ]
 
  
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
[[Категория:OLE ExtSdk2]]
 
[[Категория:OLE ExtSdk2]]

Текущая версия на 11:26, 21 июля 2021

Описание

Вызов методов модуля плагина c авторизацией( с имеющимся идентификатором сессии - session_id ). Предназначен для вызовов из интегрируемых систем, работающих с json-объектами.

Параметры

  • query_id ! (строка) - uuid для идентификации вызова метода
  • guid_module ! (строка) - uuid модуля полученный через GetModule()
  • module_method ! (строка) - Имя вызываемого метода модуля
  • parameters_module_method ! (строка) - json с параметрами, сериализованный в строку
  • account_id ! (строка) - идентификатором сессии, полученный при регистрации

Результат

Работа с ExtSdk2 осуществляется асинхронно, поэтому ответ следует ждать через вызов функции ReadAllObject. Более подробное о получении ответов и видах событий см. в статье Виды событий. В результате должно прийти событие Message, у которого в Result лежит 'результат работы вызываемого метода.

Пример успешного вызова

query_id = str(uuid.uuid4())
module_method = "ExtSdk2.AuthByPassword"
parameters_module_method = json.dumps({"Login": "login", "Password": "password"}, ensure_ascii=True)

CallMethod( query_id, guid_module, module_method, parameters_module_method, session_id )