Desenvolvimento de plugin

Olá a todos.
Tenho uma dúvida a respeito de desenvolver plugins para o CRM.

Bem, o que preciso desenvolver é um plugin que capte dados de um outro sistema (um sistema de leads). Esse sistema de leads é proprietário, porém há uma API que me permite consultar os dados do mesmo. Preciso buscar os dados através dessa API e inseri-los no SuiteCRM, a ideia principal é essa. Após desenvolvido criarei uma tarefa CRON para que, de acordo com um determinado período esse plugin possa buscar automaticamente os dados. Acredito que esse plugin também deverá ter uma interface acessível pelo CRM para que eu possa realizar algumas configurações que serão definidas posteriormente.

Ainda não tenho um escopo bem fechado do que deverá ser desenvolvido, mas basicamente essa é a ideia, alguém poderia me dar uma dica de por onde começar? Por onde começo a desenvolver?

OBS.: Minha versão do SuiteCRM é a 7.10.7, utilizo um servidor apache.

Desde já muito obrigado.

Olá

Eu nunca experimentei aprender “Connectors”, mas pode ser uma boa hipótese para explorar.

https://www.ibm.com/developerworks/opensource/library/x-sugarcrmcon/index.html

… mas talvez isso seja só para leitura, não sei.

Talvez seja suficiente.

Interessante estou dando uma olhada. Pra ser mais específico, o meu plugin irá realizar ações no CRM como, por exemplo, de acordo com os dados encontrados nesse sistema de leads, automaticamente será criada uma tarefa ou então criado uma oportunidade, será mais ou menos isso. Bem, estamos amadurecendo a ideia aqui.

Pra ser mais específico preciso integrar o RD Station ao Suite CRM.
Encontrei um tópico na no site do RD falando a respeito de integração, mas é com o Sugar.

Segue o link do tópico:
https://ajuda.rdstation.com.br/hc/pt-br/articles/201989600-Como-integrar-o-Sugar-CRM-ao-RD-Station-

O processo descrito no link acima é possível fazer no suite crm?

obrigado.

Parece que usa uma forma de integração mais ligeira, simplesmente invoca um WebToLead. Existe algo equivalente em SuiteCRM, sim, chama-se WebToPerson (person pode ser Lead, Contact, Target ou User)

https://docs.suitecrm.com/user/core-modules/campaigns/#_web_to_person_form

É simplesmente um form HTML que envia dados para dentro do SuiteCRM. Creio que não será difícil pôr a funcionar com o RD Station.

Será que é possível colocar uma oportunidade ou atividade no SuiteCRM quando algum lead se converter para oportunidade no RD?

Segundo aquela documentação do RD:

Portanto, se o RD envia um Lead para o SuiteCRM nesse evento, basta reagir a essa criação de Lead através de um logic hook (mais poderoso) ou de um Worklow (mais fácil).

Certo.
Vi nesse link: https://developers.rdstation.com/pt-BR/data-enrichment que para configurar o RD para estar enviando as informações pro CRM é bem tranquilo, através de webhook. Configuro o que irá disparar o envio das informações, um nome e a URL para o qual os dados serão enviados. Até aqui blz, agora quero saber como trato isso no CRM, ou seja, pra ele pegar esses dados e inserir no banco.

http://crm.resultadodigitais.com.br/index.php?entryPoint=WebToLeadCapture

essa url acima ela é genérica? (sei que é do sugar)

Na integração basta eu passar a equivalente do suiteCRM que no caso é : http://crm.resultadodigitais.com.br/index.php?entryPoint=WebToPersonCapture

campaign_id já sei como encontrar, assigned_user_id também sei como encontrar em (em uma campanha)

apenas quero saber se essa url é padrão, bastando apenas envia-la ao RD juntamente com as outras informações necessárias.

Integração de acordo com esse post: https://ajuda.rdstation.com.br/hc/pt-br/articles/201989600-Como-integrar-o-Sugar-CRM-ao-RD-Station-

Você viu bem o link de documentação que eu deixei acima?

https://docs.suitecrm.com/user/core-modules/campaigns/#_web_to_person_form

Tem de criar primeiro o Web to Person form no seu SuiteCRM, e aí ele lhe dá o código HTML do Form. Penso que é aí que pode extrair o endereço que deve usar, deve estar no “submit” do form.

Eu criei um form, extraí o código HTML e testei, funcionou.
Agora minha dúvida é como vou obter os dados do RD. Com esse formulario eu envio dados para o CRM, agora para o RD tenho que informar a URL que irá capturar os dados de lá, isso que estou tentando entender.

ta meio confuso pra mim.

Eu não faço ideia o que o RD está fazendo. Suponho que coloca os valores dos campos igual que o Web To Person form, e faz um POST HTTP. Ou seja, não usa realmente o Form, simplesmente faz o mesmo que ele faz.

Mas este form é semelhante ao do SugarCRM, não é exactamente igual. Deve ser necessário algum ajuste.

Talvez o melhor seja pedir ajuda lá nos fóruns do RD, se existem. O SugarCRM está morrendo, e vai morrer, o futuro é SuiteCRM.

Acho que saquei a ideia, pelo menos em teoria.
Todo form que crio utiliza para o submit a mesma URL, não tem nenhuma variação. Então acredito que passar a url e os demais dados requeridos, irá funcionar.

Bem, mas utilizar web to person me permite integrar com o RD enviando apenas contatos para o CRM. Preciso inserir no CRM além de contatos, oportunidades.
Sendo assim, encontrei o seguinte post que explica melhor isso:

https://ajuda.rdstation.com.br/hc/pt-br/articles/201867844-Integração-customizável-com-sistema-próprio-Webhook-

Para esse caso no link acima, eu teria que utilizar logic hooks. Correto?

O que eu faria no seu lugar era pôr qualquer coisa a funcionar que me traga os dados para o lado do SuiteCRM, e aí já posso resolver todos meus problemas nem necessitar de interagir mais com o RD.

Por exemplo, se em vez de oportunidade você cria um Target ou um Lead em SuiteCRM, depois pode ter um Wrkflow gerando a Oportunidade a partir de esse record (e apagar o record inicial ao terminar).

Como normalmente basta passar uns poucos dados (nome, email, assunto) não deve ser complicado conseguir algo assim.

Se preferir mesmo fazer uma solução mais completa e bem programada, pode tentar fazer um custom entrypoint em SuiteCRM, para receber esse JSON que eles falam, siga este tutorial:

https://docs.suitecrm.com/developer/entry-points/#_creating_an_entry_point

Pode alterar tudo a seu gosto, até receber e processar os dados enviados pelo RD; depois tem ao seu dispor os “beans” de SuiteCRM para criar todo tipo de records e relações, atribuir security groups, etc.

Consegui fazer a comunicação entre eles.
Entendi como funciona o EntryPoint e os Beans.

Agora toda vez que há a marcação de oportunidade no RD, é inserido uma oportunidade no SuisteCRM. Bem, a princípio ainda é um protótipo, irei trabalhar mais e aperfeiçoar.

Eu gostaria de transformar essa integração que irei fazer em plugin para o SuiteCRM sabe. Também terei de atualizar dados no RD quando houver certos eventos no CRM. (o trágego vai ser tanto do RD para o CRM quanto do CRM para o RD).

Tem algum material que oriente a maneira correta de desenvolver plugin pro SuiteCRM?

Todo o material que temos está no site docs.suitecrm.com

Deve haver documentação antiga do SugarCRM CE 6.5 que ainda se aplica quase totalmente.

Essa documentação inclui o desenvolvimento de Plugin?
Bem, a minha ideia é ao terminar o sistema de integração, torna-lo um pacote de atualização, instalação, algo assim. Pra que caso futuramente eu venha a instalar o SuiteCRM em outro servidor, eu simplesmente possa instala-lo no SuiteCRM. Sem a necessidade de verificar quais arquivos eu deva adicionar manualmente sabe.

Tem alguma ideia? O que me sugere fazer?

Eu só utilizaria esse tipo de pacotes (módulos, ou plug-ins) para enviar código para outros utilizadores.

Para uso próprio eu preferiria (mas é questão de gosto pessoal) simplesmente copiar ficheiros da pasta “custom”.

Para algo mais evoluído faria com source control git. Assim posso manter cada costumização separada num branch próprio, e é fácil aplicar as mudanças noutro servidor. Mas exige aquela aprendizagem do git, que é #$"#! ao início, mas depois compensa :slight_smile:

Ta, deixa eu ver se entendi: Crio só os entrypoint na pasta Custom, vou trabalhando com eles no git e é isso…

Seria esses arquivos o meu plugin/add-on?

Não sei quanto você já conhece git? Tem muito para aprender, e eu também estou longe de saber tudo…

Essencialmente no git você começa um “branch” e faz lá todas as alterações. Ele automaticamente observa quaquer mudança que você faça nos ficheiros.

Quando faz “commit” esse conjunto de mudanças fica gravado. Mais tarde pode reverter, ou aplicar o mesmo commit noutro branch diferente (que será o equivalente a “instalar” essas alterações).