Como assinar sem obrigatoriedade de e-mail:
A utilização do e-mail é uma premissa obrigatória para o Sign. No entanto, alguns usuários não possuem e-mail ou desejam assinar sem essa exigência. Pensando nisso, foi adicionada uma nova funcionalidade para atender a essa necessidade. Atualmente, está disponível apenas via API e com solicitação de liberação.
Ao enviar um envelope para assinatura sem exigir o e-mail, o sistema cria automaticamente um e-mail fictício internamente. É necessário que um canal de comunicação (communicationChannel) seja escolhido, podendo ser a própria plataforma, SMS ou WhatsApp. Esse canal deve ser configurado utilizando os plugins(conectores) disponíveis ao gerar o envelope.
Exemplo de envelope sem obrigatoriedade de e-mail utilizando a plataforma como canal de comunicação. Note que o processo de assinatura chega via notificação e o e-mail fictício gerado é randômico:
Canais de comunicação disponíveis na ausência do e-mail:
Canal de comunicação | Descrição | E-mail obrigatório |
Plataforma | Necessita de um usuário interno com Login e Senha da plataforma | Não (exceto o login para o usuário interno) |
SMS | Necessita de um plugin (conector) para envio de SMS | Não |
Necessita de um plugin (conector) para envio via WhatsApp | Não |
Passos para criar e enviar para a assinatura um envelope sem obrigatoriedade de e-mail:
- Criar um rascunho do envelope (passando como “false” o valor para o atributo “mandatoryEmail”).
- Enviar para assinatura.
1° – Visão geral da criação de um rascunho do envelope:
Para a chamar a primitiva via API, deve ser feito um POST para a URL: rest/platform/ecm_ged/actions/saveEnvelope
passando um JSON como corpo da requisição com os seguinte parâmetros de versionamento no Headers:
Accept: application/json;seniorx.version=3
Atributos utilizados nesta primitiva:
Atributo | Descrição | Tipo | Obrigatório |
Name | Nome do envelope | String | Não |
envelopeDocuments | Lista de documentos | Array | Não |
signers (ver tabela 2) | Signatários | Array | Não |
instructionsToSign | Instruções para os signatários | String | Não |
askGeolocation | Habilitar/Desabilitar coleta de posição geográfica | DONT_ASK_LOCATION, ASK_LOCATION ou REQUIRED_LOCATION | Não |
recurrentNotificationIntervalDays | Recorrência de dias para notificação | Int | Sim (padrão 0 dias) |
daysToExpire | Dias para expiração do envelope | Int | Sim (padrão 120 dias) |
Atributo | Descrição | Tipo | Obrigatório |
name | Nome do signatário | String | Sim |
E-mail do signatário | String | Se torna obrigatório caso “mandatoryEmail” seja true | |
phoneNumber | Telefone do signatário | String | Se torna obrigatório caso “mandatoryEmail” seja false e o canal de comunicação escolhido seja SMS ou WhatsApp |
username | nome do usuário da plataforma | String | Se torna obrigatório caso “mandatoryEmail” seja false e o canal de comunicação seja a plataforma |
communicationChannel | Canais de comunicação do usuário | Objeto | Se torna obrigatório informar pelo menos um canal de comunicação caso “mandatoryEmail” seja false |
signerType | Tipo de assinante | MANDATORY, RECEIVE_COPY, RECEIVE_COPY_BEFORE_SIGN ou PIONEER | Não |
signerSubType | Subtipo de assinante | DISABLED, OPTIONAL ou MANDATORY | Não |
orderSign | Ordem do assinante | Int | Sim |
digitalCertificate | Assinar com certificado digital | MANDATORY, RECEIVE_COPY, RECEIVE_COPY_BEFORE_SIGN ou PIONEER | Não |
mandatoryEmail | Obrigatoriedade do uso de e-mail | Boolean | Não (Padrão true) |
Exemplo de JSON resumido:
{
"name": "string",
"envelopeDocuments": [
{
"documentVersion": "string",
"envelopePosition": 1
}
],
"signers": [
{
"name": "string",
"email": "string",
"phoneNumber": "string",
"username": "string",
"askGeolocation": "DONT_ASK_LOCATION",
"signerStatus": "string",
"communicationChannel": {
"email": false,
"platform": false,
"whatsapp": false,
"sms": false
},
"signerType": "MANDATORY",
"signerSubType": "SIGN",
"orderSign": 1,
"digitalCertificate": "DISABLED",
"mandatoryEmail": false
}
],
"instructionsToSigner": "string",
"askGeolocation": "DONT_ASK_LOCATION",
"recurrentNotificationIntervalDays": 0,
"daysToExpire": 120,
"conectors": []
}
Ao executar a chamada com sucesso, um envelopeDraftId será gerado:
Payload de um rascunho utilizando a plataforma (Usuário interno):
Neste caso o e-mail esta sendo passado como não obrigatório (“mandatoryEmail”: false) e o usuário quer utilizar a plataforma para enviar para assinatura:
- Note que o valor de “platform” em “communicationChannel” esta sendo passado como “true”
- o atributo “mandatoryEmail” esta sendo passado como “false”
{
"name": "string",
"envelopeDocuments": [
{
"documentVersion": "string",
"envelopePosition": 1
}
],
"signers": [
{
"name": "string",
"email": "string",
"username": "string",
"phoneNumber": "string",
"username": "string",
"askGeolocation": "DONT_ASK_LOCATION",
"signerStatus": "string",
"communicationChannel": {
"email": false,
"platform": true,
"whatsapp": false,
"sms": false
},
"signerType": "MANDATORY",
"signerSubType": "SIGN",
"orderSign": 1,
"digitalCertificate": "DISABLED",
"mandatoryEmail": false
}
],
"instructionsToSigner": "string",
"askGeolocation": "DONT_ASK_LOCATION",
"recurrentNotificationIntervalDays": 0,
"daysToExpire": 120,
"conectors": []
}
Exemplo de payload de um rascunho utilizando o SMS ou WhatsApp:
Neste caso o e-mail está sendo passado como não obrigatório (“mandatoryEmail”: false) e o usuário quer utilizar o SMS ou WhatsApp para efetuar o processo de assinatura.
Utilizando o SMS:
- Note que o valor de “sms” no “communicationChannel” está sendo passado como “true”.
- O Atributo “mandatoryEmail” está sendo passado como “false”.
- O atributo phoneNumber deve estar preenchido
- O atributo conector está preenchido pois ele é o responsável de integrar o respectivo serviço de SMS com o Sign.
Utilizando o WhatsApp:
- Segue os mesmos padrões do SMS, alterando apenas o valor de “whatsapp” para “true”
Obs: Há diversos conectores que podem ser utilizados para tal ação.
{
"signers": [
{
"name": "User",
"phoneNumber": "47123456789",
"orderSign": 1,
"signerType": "MANDATORY",
"signerSubType": "SIGN",
"communicationChannel": {
"email": false,
"platform": false,
"sms": true
},
"mandatoryEmail": false
}
],
"conectors": [
{
"name": "send-sms-infobip",
"id": "string",
"title": "Enviar SMS (Infobip)",
"description": "Envia um SMS utilizando os serviços da Infobip.",
"inputs": [
{
"id": "string",
"inputName": "Token de autorização",
"inputParameter": "string",
"inputType": "string",
"required": boolean,
"value": "string",
"inputValue": "string"
}
]
}
],
"envelopeDocuments": [
{
"documentVersion": "0d110945-2f49-4062-be2f-efe780ae9a18",
"envelopePosition": 1
}
],
"envelopeDraftId": "",
"name": "Teste",
"documentsVersions": [
"0d110945-2f49-4062-be2f-efe780ae9a18"
],
"askGeolocation": "DONT_ASK_LOCATION",
"daysToNotify": 0,
"daysToExpire": 120,
"notificateAuthor": false,
"recurrentNotificationIntervalDays": 0
}
Para saber mais sobre os conectores, clique aqui.
2º – Enviando o rascunho criado para a assinatura:
Com o valor do envelopeDraftId gerado no passo anterior, basta realizar um POST para a primitiva sendDraftToSign na URL rest/platform/ecm_ged/actions/sendDraftToSign passando um JSON como corpo da requisição.
Atributos usados nessa requisição:
Atributo | Descrição | Tipo | Obrigatório |
envelopeDraftId | Id gerado na criação do rascunho do envelope (passo 1) | String | Sim |
notifyUser | Notificação do usuário | Boolean | Não |
sendEmail | Envia um e-mail notificando sobre o processo de assinatura | Boolean | Não |
Exemplo de JSON:
{
"envelopeDraftId": "string",
"notifyUser": false,
"sendEmail": true
}
Ao realizar a chamada com sucesso, um envelopeId será retornado e o envelope terá sido enviado para a assinatura:
Para saber mais sobre o envio de um envelope para a assinatura, clique aqui.