Yo uso la versión 7.11.10, y estoy en proceso de integración del soap.wsld, pero no encuentro documentación al respecto y los links del tema están sin información
That’s API v4, if I’m not mistaken.
Shouldn’t you be aiming for API v8?
¿Pero la API v8 no es para Restfull?
(He movido el topico)
Esta es la documentacion
https://docs.suitecrm.com/developer/api/
cual es el problema concreto?
Estoy aprendiendo sobre web service, y actualmente debo integrar un web service SOAP.wsdl a suitecrm para que se comunique con otra aplicación en tiempo real, pero la documentación es sobre API en RestFull y JSon, y como soy nuevo con los web serice no se como usarlo
En que sistema/lenguaje está esa otra aplicación? PHP, Java, qué?
Y en que sentido quieres integrar?
- Cuando algo cambia en la otra, actualizar SuiteCRM
- Cuando algo cambia en SuiteCRM, actualizar en la otra
- Ambas direcciones
La integración es que al crear me envié esos campos a la otra aplicación y ella genera un key que quiero quede en un campo(Código Spiga:) de creación de leads .
este es el wsdl:
<?xml version="1.0" encoding="utf-8"?><!--prologo-->
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://lead.crm.spiga.liderasoluciones.com/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://lead.crm.spiga.liderasoluciones.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://lead.crm.spiga.liderasoluciones.com/">
<s:element name="addLead">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="autentication" type="tns:Autentication" />
<s:element minOccurs="0" maxOccurs="1" name="lead" type="tns:Lead" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="Autentication">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Identifier" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Key" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="Lead">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="OrigenLead" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ContenidoLead" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Empleado" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Empresa" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Centro" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ClaseTercero" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Nombre" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Apellido1" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Apellido2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Telefono" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Observaciones" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="FechaAltaExterna" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="FechaValidez" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Matricula" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Documento" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Telefono2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="NombreCalle" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Numero" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Bloque" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Piso" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Puerta" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Complemento" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Complemento2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Pais" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CodigoPostal" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Poblacion" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Provincia" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Estado" type="s:string" />
</s:sequence>
</s:complexType>
<s:element name="addLeadResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="addLeadResult" type="tns:LeadResult" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="LeadResult">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="IsError" nillable="true" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="Messages" type="tns:ArrayOfErrorResult" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfErrorResult">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="ErrorResult" nillable="true" type="tns:ErrorResult" />
</s:sequence>
</s:complexType>
<s:complexType name="ErrorResult">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ErrorCode" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ErrorDescription" type="s:string" />
</s:sequence>
</s:complexType>
</s:schema>
</wsdl:types>
<wsdl:message name="addLeadSoapIn">
<wsdl:part name="parameters" element="tns:addLead" />
</wsdl:message>
<wsdl:message name="addLeadSoapOut">
<wsdl:part name="parameters" element="tns:addLeadResponse" />
</wsdl:message>
<wsdl:portType name="WsLeadSoap">
<wsdl:operation name="addLead">
<wsdl:input message="tns:addLeadSoapIn" />
<wsdl:output message="tns:addLeadSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="WsLeadSoap" type="tns:WsLeadSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="addLead">
<soap:operation soapAction="http://lead.crm.spiga.liderasoluciones.com/addLead" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="WsLeadSoap12" type="tns:WsLeadSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="addLead">
<soap12:operation soapAction="http://lead.crm.spiga.liderasoluciones.com/addLead" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="WsLead">
<wsdl:port name="WsLeadSoap" binding="tns:WsLeadSoap">
<soap:address location="http://URL/WsLead.asmx" />
</wsdl:port>
<wsdl:port name="WsLeadSoap12" binding="tns:WsLeadSoap12">
<soap12:address location="http://Us/WsLead.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Es que eso es SuiteCRM utilizando (“consumiendo”) una API de otra aplicación - no utilizas la API de SuiteCRM de todo.
Lo que tienes que hacer es buscar como llamar ese servicio en PHP (genérico, no de SuiteCRM). Cuando tengas un bloque de código PHP que llama con suceso ese servicio, después intentas ponerlo dentro de SuiteCRM.
En ese momento buscas la documentación sobre logic hooks:
https://docs.suitecrm.com/developer/logic-hooks/
Y creas una after_save logic hook que es llamada cuando el usuario graba sus datos, y recibe lo código e lo graba también.
Atención que hacerlo solo en PHP implica que hay que grabar, e después volver a cargar la vista para poder ver el código nuevo. Si quieres algo más interactivo puede ser mejor desarollar la llamada al servicio externo a partir de Javascript, en lugar de PHP, de modo que ejecute en el front-end en lugar de en el back-end.
Es decir, creo un código PHP, que llame el SOAP.wsdl(qué se guardara en la carpeta modules) y luego con un logic hooks(lo guardo en la misma carpeta)hago que se envíe información al guardar los datos de creación y reciba el Key ¿Correcto?
Bueno… algo así.
Las carpetas no - no debes poner nada en modules
, tienes que hacer como se manda aqui
https://docs.suitecrm.com/developer/logic-hooks/
También no es muy preciso decir que “llamas” el soap.wsdl. Ese archivo tiene apenas una descripción del web service que quieres llamar. Tienes que utilizar algun objecto para facilitar, como en estes ejemplos: