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.
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.
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)
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.
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.
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:
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:
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?
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.
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
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).