Skip to content

Enviando mensagens para conversas da demanda

Enviando mensagens para a conversa privada

Para enviar mensagens para a conversa privada de uma demanda, é necessário utilizar a mutation sendRequisitionMessage. Esta mutation recebe os seguintes parâmetros:

Parâmetros de envio de mensagens para a conversa privada

PropriedadeTipoDescrição
requisitionIdStringID da demanda que receberá a mensagem.
contentStringConteúdo da mensagem.
graphql
mutation SendRequisitionMessage(
  $requisitionId: ID!
  $content: String!
) {
  result: sendRequisitionMessage(
    requisitionId: $requisitionId
    content: $content
  ) {
    id
    content
    createdAt
    sender {
      id
      name
      email
    }
  }
}
js
async function sendRequisitionMessage(requisitionId, content, files = []) {
  const response = await fetch('https://api.linte.com/graphql', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'key': '<seu-token>'
    },
    body: JSON.stringify({
      query: `
        mutation SendRequisitionMessage(
          $requisitionId: ID!
          $content: String!
        ) {
          result: sendRequisitionMessage(
            requisitionId: $requisitionId
            content: $content
          ) {
            id
            content
            createdAt
            sender {
              id
              name
              email
            }
          }
        }
      `,
      variables: {
        requisitionId,
        content,
      }
    })
  });

  const result = await response.json();
  console.log(result);
}

// Exemplo de uso
sendRequisitionMessage(
  '<id-da-demanda>',
  'Nova mensagem',
  ['<id-do-arquivo>'] // opcional
);
python
import requests

def send_requisition_message(requisition_id, content, files=None):
    if files is None:
        files = []
        
    response = requests.post(
        'https://api.linte.com/graphql',
        headers={
            'Content-Type': 'application/json',
            'key': '<seu-token>'
        },
        json={
            'query': '''
                mutation SendRequisitionMessage(
                  $requisitionId: ID!
                  $content: String!
                ) {
                  result: sendRequisitionMessage(
                    requisitionId: $requisitionId
                    content: $content
                  ) {
                    id
                    content
                    createdAt
                    sender {
                      id
                      name
                      email
                    }
                  }
                }
            ''',
            'variables': {
                'requisitionId': requisition_id,
                'content': content,
            }
        }
    )
    
    print(response.json())

if __name__ == '__main__':
    send_requisition_message(
        '<id-da-demanda>',
        'Nova mensagem',
        ['<id-do-arquivo>']  # opcional
    )

Enviando mensagens com arquivos para a conversa privada

TIP

Para uma explicação detalhada sobre como fazer upload de arquivos via GraphQL, incluindo melhores práticas e tratamento de erros, consulte nosso Guia de Upload de Arquivos com GraphQL.

Para enviar mensagens com arquivos para a conversa privada de uma demanda, é necessário utilizar a mutation sendRequisitionMessageWithFiles. Esta mutation recebe os seguintes parâmetros:

Parâmetros de envio de mensagens com arquivos para a conversa privada

PropriedadeTipoDescrição
requisitionIdStringID da demanda que receberá a mensagem.
contentStringConteúdo da mensagem.
files[String]Paths dos arquivos a serem anexados à mensagem.
graphql
mutation($input: SendRequisitionMessageWithFilesInput!) {
    result: sendRequisitionMessageWithFiles(input: $input) {
        id
        content
        createdAt
        files {
            id
            fileName
            fileExtension
            fileDownloadUrl
        }
    }
}
js
async function sendRequisitionMessageWithFiles(requisitionId, content, file) {
  const formData = new FormData();

  formData.append(
    'operations',
    JSON.stringify({
      variables: {
        input: {
          requisitionId,
          content,
          files: [null]
        }
      },
      query: `
        mutation($input: SendRequisitionMessageWithFilesInput!) {
          result: sendRequisitionMessageWithFiles(input: $input) {
            id
            content 
            createdAt
            files {
              id
              fileName
              fileExtension
              fileDownloadUrl
            }
          }
        } 
      `
    })
  );

  const map = `["variables.input.files.0"]`;
  formData.append('map', map);
  formData.append('0', file);

  const response = await fetch('https://api.linte.com/graphql', {
    method: 'POST',
    headers: {
      'Apollo-Require-Preflight': 'true',
      'key': '<seu-token>'
    },
    body: formData
  });

  const result = await response.json();
  console.log(result);
}

// Exemplo de uso
sendRequisitionMessageWithFiles(
  '<id-da-demanda>',
  'Nova mensagem',
  new File([''], 'arquivo.pdf', { type: 'application/pdf' })
);
python
import requests
import json

def send_requisition_message_with_files(requisition_id, content, file_path):
    # Preparar o arquivo
    files = {
        '0': ('document.pdf', open(file_path, 'rb'), 'application/pdf')
    }
    
    # Preparar a operação GraphQL
    operations = {
        'variables': {
            'input': {
                'requisitionId': requisition_id,
                'content': content,
                'files': [None]
            }
        },
        'query': '''
            mutation ($input: SendRequisitionMessageWithFilesInput!) {
              result: sendRequisitionMessageWithFiles(input: $input) {
                id
                content
                createdAt
                files {
                  id
                  fileName
                  fileExtension
                  fileDownloadUrl
                }
              }
            }
        '''
    }
    
    # Preparar o mapeamento
    map = {
        '0': ['variables.input.files.0']
    }
    
    # Enviar a requisição
    response = requests.post(
        'https://api.linte.com/graphql',
        headers={
            'Apollo-Require-Preflight': 'true',
            'key': '<seu-token>'
        },
        data={
            'operations': json.dumps(operations),
            'map': json.dumps(map)
        },
        files=files
    )
    
    print(response.json())

if __name__ == '__main__':
    send_requisition_message_with_files(
        '<id-da-demanda>',
        'Nova mensagem',
        'caminho/para/seu/arquivo.pdf'
    )

Enviando mensagens para conversas públicas ou chats privados

Para enviar mensagens para uma conversa pública ou chat privado de uma demanda, é necessário utilizar a mutation sendRequisitionChatGroupMessage. Esta mutation recebe os seguintes parâmetros:

Parâmetros de envio de mensagens para conversas públicas ou chats privados

PropriedadeTipoDescrição
requisitionIdStringID da demanda que contém a conversa.
requisitionChatGroupIdStringID da conversa que receberá a mensagem.
messageTextStringConteúdo da mensagem.
graphql
mutation SendRequisitionChatGroupMessage(
  $requisitionId: ID!
  $requisitionChatGroupId: ID!
  $messageText: String!
) {
  result: sendRequisitionChatGroupMessage(
    requisitionId: $requisitionId
    requisitionChatGroupId: $requisitionChatGroupId
    messageText: $messageText
  ) {
    id
    content
    createdAt
    sender {
      id
      name
      email
    }
    files {
      id
      fileName
      fileExtension
      fileDownloadUrl
    }
  }
}
js
async function sendRequisitionChatGroupMessage(
  requisitionId,
  requisitionChatGroupId,
  content,
  files = []
) {
  const response = await fetch('https://api.linte.com/graphql', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'key': '<seu-token>'
    },
    body: JSON.stringify({
      query: `
        mutation SendRequisitionChatGroupMessage($requisitionId: ID!, $messageText: String!, $requisitionChatGroupId: ID!) {
          result: sendRequisitionChatGroupMessage(
            requisitionId: $requisitionId, messageText: $messageText, requisitionChatGroupId: $requisitionChatGroupId
          ) {
            id
            content
            createdAt
            sender {
              id
              name
              email
            }
            files {
              id
              fileName
              fileExtension
              fileDownloadUrl
            }
          }
        }
      `,
      variables: {
        requisitionId,
        requisitionChatGroupId,
        messageText: content,
      }
    })
  });

  const result = await response.json();
  console.log(result);
}

// Exemplo de uso
sendRequisitionChatGroupMessage(
  '<id-da-demanda>',
  '<id-do-chat>',
  'Nova mensagem',
  ['<id-do-arquivo>'] // opcional
);
python
import requests

def send_requisition_chat_group_message(
    requisition_id,
    requisition_chat_group_id,
    content,
    files=None
):
    if files is None:
        files = []
        
    response = requests.post(
        'https://api.linte.com/graphql',
        headers={
            'Content-Type': 'application/json',
            'key': '<seu-token>'
        },
        json={
            'query': '''
                mutation SendRequisitionChatGroupMessage(
                  $requisitionId: ID!
                  $requisitionChatGroupId: ID!
                  $messageText: String!
                ) {
                  result: sendRequisitionChatGroupMessage(
                    requisitionId: $requisitionId
                    requisitionChatGroupId: $requisitionChatGroupId
                    messageText: $messageText
                  ) {
                    id
                    content
                    createdAt
                    sender {
                      id
                      name
                      email
                    }
                    files {
                      id
                      fileName
                      fileExtension
                      fileDownloadUrl
                    }
                  }
                }
            ''',
            'variables': {
                'requisitionId': requisition_id,
                'requisitionChatGroupId': requisition_chat_group_id,
                'content': content,
                'files': files
            }
        }
    )
    
    print(response.json())

if __name__ == '__main__':
    send_requisition_chat_group_message(
        '<id-da-demanda>',
        '<id-do-chat>',
        'Nova mensagem',
        ['<id-do-arquivo>']  # opcional
    )

Enviando mensagens com arquivos para conversas públicas ou chats privados

TIP

Para uma explicação detalhada sobre como fazer upload de arquivos via GraphQL, incluindo melhores práticas e tratamento de erros, consulte nosso Guia de Upload de Arquivos com GraphQL.

Para enviar mensagens com arquivos para uma conversa pública ou chat privado de uma demanda, é necessário utilizar a mutation sendRequisitionChatGroupMessageWithFiles. Esta mutation recebe os seguintes parâmetros:

Parâmetros de envio de mensagens com arquivos para conversas públicas ou chats privados

PropriedadeTipoDescrição
requisitionIdStringID da demanda que contém a conversa.
requisitionChatGroupIdStringID da conversa que receberá a mensagem.
messageTextStringConteúdo da mensagem.
files[String]Lista de IDs dos arquivos anexados à mensagem.
graphql
mutation ($input: SendRequisitionChatGroupMessageWithFilesInput!) {
  result: sendRequisitionChatGroupMessageWithFiles(input: $input) {
    id
    content
    createdAt
    files {
      id
      fileName
      fileExtension
      fileDownloadUrl
    }
  }
}
js
async function sendRequisitionChatGroupMessageWithFiles(
  requisitionId,
  requisitionChatGroupId,
  content,
  file
) {
  const formData = new FormData();

  formData.append(
    'operations',
    JSON.stringify({
      variables: {
        input: {
          requisitionId,
          requisitionChatGroupId,
          messageText: content,
          files: [null]
        }
      },
      query: `
        mutation ($input: SendRequisitionChatGroupMessageWithFilesInput!) {
          result: sendRequisitionChatGroupMessageWithFiles(input: $input) {
            id
            content
            createdAt
            files {
              id
              fileName
              fileExtension
              fileDownloadUrl
            } 
          }
        }
      `
    })
  );

  const map = `["variables.input.files.0"]`;
  formData.append('map', map);
  formData.append('0', file);

  const response = await fetch('https://api.linte.com/graphql', {
    method: 'POST',
    headers: {
      'Apollo-Require-Preflight': 'true',
      'key': '<seu-token>'
    },
    body: formData
  });

  const result = await response.json();
  console.log(result);
}

// Exemplo de uso
sendRequisitionChatGroupMessageWithFiles(
  '<id-da-demanda>',
  '<id-do-chat>',
  'Nova mensagem',
  new File([''], 'arquivo.pdf', { type: 'application/pdf' })
);
python
import requests
import json

def send_requisition_chat_group_message_with_files(
    requisition_id,
    requisition_chat_group_id,
    content,
    file_path
):
    # Preparar o arquivo
    files = {
        '0': ('document.pdf', open(file_path, 'rb'), 'application/pdf')
    }
    
    # Preparar a operação GraphQL
    operations = {
        'variables': {
            'input': {
                'requisitionId': requisition_id,
                'requisitionChatGroupId': requisition_chat_group_id,
                'messageText': content,
                'files': [None]
            }
        },
        'query': '''
            mutation ($input: SendRequisitionChatGroupMessageWithFilesInput!) {
              result: sendRequisitionChatGroupMessageWithFiles(input: $input) {
                id
                content
                createdAt
                files {
                  id
                  fileName
                  fileExtension
                  fileDownloadUrl
                }
              }
            }
        '''
    }
    
    # Preparar o mapeamento
    map = {
        '0': ['variables.input.files.0']
    }
    
    # Enviar a requisição
    response = requests.post(
        'https://api.linte.com/graphql',
        headers={
            'Apollo-Require-Preflight': 'true',
            'key': '<seu-token>'
        },
        data={
            'operations': json.dumps(operations),
            'map': json.dumps(map)
        },
        files=files
    )
    
    print(response.json())

if __name__ == '__main__':
    send_requisition_chat_group_message_with_files(
        '<id-da-demanda>',
        '<id-do-chat>',
        'Nova mensagem',
        'caminho/para/seu/arquivo.pdf'
    )