> For the complete documentation index, see [llms.txt](https://ajuda.rnp.br/conferenciaweb/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ajuda.rnp.br/conferenciaweb/manuais-de-uso-do-servico/manual-do-administrador/criacao-do-moodle-token.md).

# Criação do Moodle Token

###

Para utilizar nossos serviços adicionais – como o suporte a **grupos**, a **integração com calendário** ou a **presença automática** – é necessário primeiro criar um **Moodle Token**.

Essa etapa inicial é comum para todos os serviços extras. Após a criação do token, siga para a seção da documentação dedicada a cada uma das funcionalidades.

Requisitos:

* Ter privilégio de admin no Moodle

Ao final deste processo, terá sido criado na sua instância Moodle:

* Um Moodle token **mconf-token** que será utilizado pelo ConferênciaWeb LTI para interagir com a sua instância Moodle para fins de integração
* Um novo serviço **confweb-lti-external-service**, responsável por definir as permissões do Moodle token criado acima
* Um novo usuário **confweb-lti-webservice-user**, responsável pelo serviço criado acima
* Um novo papel **confweb-lti-role**, exclusivo do usuário **confweb-lti-webservice-user**

Para desativar as integrações abaixo, basta remover o Moodle token da sua instância.

Passo-a-passo:

1. Crie um novo usuário (`Administração do site` → `Usuários` → `Contas` → `Adicionar um novo usuário`→ `Adicionar`) e preencha os campos `Identificação de usuário`, `Nome`, `Sobrenome` e `Endereço de Email`.

{% hint style="info" %}
Identificação de usuário: `confweb-lti-webservice-user`

Nome: `Confweb LTI Webservice`

Sobrenome: `User`

**Email:** Insira um endereço de e-mail que não esteja cadastrado no Moodle. Esta conta será usada exclusivamente para fins administrativos e não para acesso de um usuário real.
{% endhint %}

* Crie um novo papel (`Administração do site` → `Usuários` → `Permissões` → `Definir papéis`) e selecione `Acrescentar um novo papel`.
* Preencha os campos de `Nome breve`, `Nome completo personalizado` e `Descrição personalizada` e marque a checkbox de `Sistema` em `Tipos de contexto onde esse papel pode ser atribubído`.

  ![image.png](https://4071737184-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M7hXYp2PZ9COGqQOKpE%2Fuploads%2FnyE8uxYdZGIrIOp4XFzN%2Ftoken.webp?alt=media\&token=9454d2e0-d27c-4f7f-ba18-d9446668bc34)

  ```
  Descrição personalizada: Papel dedicado às permissões exclusivas do usuário confweb-lti-webservice-user, responsável pelo gerenciamento dos serviços adicionais de integração do ConferênciaWeb - como o módulo de grupos, a integração com calendário ou a presença automática.
  ```
* Conceda as seguintes permissões ao papel recém criado:
  1. `mod/lti:view`
  2. `moodle/course:view`
  3. `moodle/course:managegroups`
  4. `webservice/rest:use`
  5. `moodle/calendar:manageentries`
  6. `moodle/calendar:managegroupentries`
  7. `moodle/course:update`
  8. `moodle/course:viewhiddencourses`
  9. `moodle/user:viewdetails`
  10. `moodle/user:viewhiddendetails`
  11. `moodle/course:useremail`
  12. `moodle/user:update`
  13. `moodle/site:accessallgroups`
* Conceda o papel ao usuário acessando `Administração do site` → `Usuários` → `Permissões` → `Atribuir papéis globais` e selecionando `confweb-lti-role`.

  ![image.png](https://4071737184-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M7hXYp2PZ9COGqQOKpE%2Fuploads%2FFtTn2SmypnkotZXtVweF%2Ftoken1.webp?alt=media\&token=2823ee0e-c149-412b-9b72-26f76df74edb)
* Adicione o usuário `Confweb LTI Webservice User` na coluna à esquerda de `Usuários existentes`. Uma vez que ele está na coluna da esquerda está pronto, não é necessário salvar.

![image.png](https://4071737184-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M7hXYp2PZ9COGqQOKpE%2Fuploads%2FvB5UuTz08dds6Bi8UzeJ%2Ftoken2.webp?alt=media\&token=bed788d0-2642-4662-be8c-d302ddfdbcf1)

Criar um novo serviço externo (`Administração do site` → `Servidor` → `Web services` → `Serviços externos` → `Adicionar`) conforme a seguir.

![image.png](https://4071737184-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M7hXYp2PZ9COGqQOKpE%2Fuploads%2F32OFuBg0yjXc9IeD3Imy%2Ftoken3.webp?alt=media\&token=ddac249c-9aa4-4fcc-950d-96ca2c3f4269)

{% hint style="info" %}
&#x20;No Moodle 3.8 o caminho é `Administração do site` → `Plugins` → `Web services` → `Serviços externos` → `Adicionar`
{% endhint %}

1. Crie um novo token (`Administração do site` → `Servidor` → `Web services` → `Gerenciar tokens` → `Criar token` ) conforme a seguir.

   ![image.png](https://4071737184-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M7hXYp2PZ9COGqQOKpE%2Fuploads%2FQH3S2I6w39rGEyUO6jhG%2Ftoken4.webp?alt=media\&token=02e622b1-058c-42f3-a1e3-c2fb825e5633)

{% hint style="warning" %}
⚠️ É importante notar que:

* O nome do usuário é ConferênciaWeb LTI Webservice User - não coloque seu usuário neste campo;
* O serviço precisa ser o recém-criado (`confweb-lti-external-service`);
* O checkbox do `Válido até` está **DESMARCADO.** Caso queira posteriormente invalidar o token, o mesmo pode ser excluído na página `Gerenciar tokens`.
  {% endhint %}

1. Ao clicar em `Salvar mudanças`, a seguinte página mostrará o token **uma única vez**, então anote em algum lugar seguro.

   ![image.png](https://4071737184-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M7hXYp2PZ9COGqQOKpE%2Fuploads%2FHBsrnFuvrry4UryeetLI%2Ftoken5.webp?alt=media\&token=b5f05387-0624-4580-8b32-e0f8af1e9ae4)
2. Enviar para o Suporte:
   * Identificar-se como instituição usuária do ConferênciaWeb via Moodle
   * Informar a chave LTI configurada. Caso o Moodle ainda não tenha credencial LTI configurada, informar que ainda não faz uso do ConferênciaWeb via Moodle e que precisa de uma credencial LTI
   * Informar o token criado através do passo anterior (ex: 8b228f3149a3f27338baaf47dec81c81)
   * Informar o serviço que deseja ativar - o módulo de Grupos do Moodle, a integração com o calendário e/ou com o módulo de presença automática.
   * Informar a URL de webservices da instância do Moodle onde o token foi criado (ex: <https://moodle.h.mconf.dev/webservice/rest/server.php>
   * A URL do Moodle precisa ser adicionada [/webservice/rest/server.php](https://moodle.h.mconf.dev/webservice/rest/server.php) para que a mensagem de token inválido apareça.

{% hint style="warning" %}
💡 Dica 1: ao acessar a URL, uma mensagem de “token inválido” será apresentada, o que significa que é a URL correta.

\
💡 Dica 2: a URL pode ou não ter o path `/moodle` antes do `/webservice`, vai depender das configurações do Moodle.
{% endhint %}

Agora, siga para a seção da documentação específica do serviço que você deseja integrar.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://ajuda.rnp.br/conferenciaweb/manuais-de-uso-do-servico/manual-do-administrador/criacao-do-moodle-token.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
