Я пытаюсь связать Python и Salesforce.
Salesforce отправляет мне исходящее SOAP-сообщение, которое я правильно получаю, подтверждаю и читаю.
Теперь я хотел бы проанализировать сообщение, чтобы определить, какой скрипт вызывать в Python.
Ниже приведен печатный пример тела полученного сообщения: (У меня есть анонимные идентификаторы с XXX)
b'<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<notifications xmlns="http://soap.sforce.com/2005/09/outbound">
<OrganizationId>00Dxxxx</OrganizationId>
<ActionId>04k5A000000XXX</ActionId>
<SessionId xsi:nil="true"/>
<EnterpriseUrl>https://xxx-dev-ed.my.salesforce.com/services/Soap/c/45.0/00Dxxxx </EnterpriseUrl>
<PartnerUrl>https://xxx-dev-ed.my.salesforce.com/services/Soap/u/45.0/00Dxxxx </PartnerUrl>
<Notification>
<Id>04l5A000XXX</Id>
<sObject xsi:type="sf:QuoteHistory__c" xmlns:sf="urn:sobject.enterprise.soap.sforce.com">
<sf:Id>a0B5A0XXX</sf:Id>
<sf:Status__c>Send price request</sf:Status__c>
</sObject>
</Notification>
</notifications>
</soapenv:Body>
</soapenv:Envelope>'
Что такое б перед ул? Python печатает его, когда я печатаю тело сообщения. Имеет ли это какое-либо влияние?
Теперь, чтобы обработать мое сообщение, я бы хотел прочитать строки на вкладке sObject, т.е. те, которые в моем примере:
<sObject xsi:type="sf:QuoteHistory__c" xmlns:sf="urn:sobject.enterprise.soap.sforce.com">
<sf:Id>a0B5A0XXX</sf:Id>
<sf:Status__c>Send price request</sf:Status__c>
</sObject>
Иногда я ожидаю, что мое сообщение будет иметь другие поля, отличные от Status и Id, и я хотел бы правильно проанализировать сообщение в таблице, а затем определить, какое действие инициировать, на основе отправленных полей и их значений.
Со своей стороны я буду управлять таблицей с именами полей / значениями полей и действием для запуска, что мне кажется простым.
Как лучше всего правильно и динамически прочитать это сообщение?