Este guia descreve como configurar e executar um complemento de exemplo do Google Meet criando um palco principal e um painel lateral. Os "Hello World" exemplos nesta página também estão disponíveis no GitHub como complementos completos do Meet criados com JavaScript básico ou TypeScript do Next.js.
Instalar e importar o SDK
É possível acessar o SDK usando o npm ou o gstatic.
npm (recomendado)
Se o projeto usa o npm, siga as instruções do pacote npm do SDK de complementos do Meet.
Primeiro, instale o pacote npm:
npm install @googleworkspace/meet-addons
Em seguida, o SDK de complementos do Meet estará disponível importando a
MeetAddonExport
interface:
import {meet} from '@googleworkspace/meet-addons/meet.addons';
Para usuários do TypeScript, as definições do TypeScript são empacotadas com o módulo.
Os usuários do TypeScript precisam definir moduleResolution como "bundler" no
tsconfig.json do projeto para que a
especificação "exports" do package.json
permita a importação da exportação do pacote de compartilhamento de tela.
gstatic
O SDK de complementos do Google Meet está disponível como um pacote JavaScript do gstatic, um domínio que veicula conteúdo estático.
Para usar o SDK de complementos do Meet, adicione a seguinte tag script ao app:
<script src="https://www.gstatic.com/meetjs/addons/1.1.0/meet.addons.js"></script>
O SDK de complementos do Meet está disponível pela MeetAddon interface em window.meet.addon.
Criar uma página do painel lateral
O painel lateral mostra os complementos instalados que podem ser selecionados e usados. Depois de selecionar o complemento, um iframe carrega o URL do painel lateral que você especifica no manifesto do complemento. Esse precisa ser o ponto de entrada do app e, no mínimo, fazer o seguinte:
Indicar que o carregamento do complemento foi concluído. O Meet mostra uma tela de carregamento enquanto o complemento está sendo carregado. Quando a sessão do complemento é estabelecida chamando o
createAddonSession() método, o Meet trata isso como um sinal do complemento de que o carregamento terminou e que o usuário pode interagir com o conteúdo de terceiros. O complemento não deve chamar o métodocreateAddonSession()até que o conteúdo termine de carregar.Criar o cliente do painel lateral. Para acessar o SDK de complementos do Meet no painel lateral, é necessário instanciar uma
MeetSidePanelClientinterface. Isso oferece controle sobre a experiência principal do SDK de complementos do Meet.Iniciar a atividade. Isso permite que outras pessoas participem do complemento e, opcionalmente, abre o complemento no palco principal.
O exemplo de código a seguir mostra como a sessão cria um cliente do painel lateral e como o cliente do painel lateral inicia uma atividade no palco principal:
JS básico + Webpack
Em um novo arquivo chamado main.js, defina uma função que cria uma
sessão de complemento, o cliente do painel lateral e inicia
a atividade quando um botão com o ID 'start-activity' é clicado:
import { meet } from '@googleworkspace/meet-addons/meet.addons';
const CLOUD_PROJECT_NUMBER = 'CLOUD_PROJECT_NUMBER';
const MAIN_STAGE_URL = 'MAIN_STAGE_URL';
/**
* Prepares the add-on Side Panel Client, and adds an event to launch the
* activity in the main stage when the main button is clicked.
*/
export async function setUpAddon() {
const session = await meet.addon.createAddonSession({
cloudProjectNumber: CLOUD_PROJECT_NUMBER,
});
const sidePanelClient = await session.createSidePanelClient();
document
.getElementById('start-activity')
.addEventListener('click', async () => {
await sidePanelClient.startActivity({
mainStageUrl: MAIN_STAGE_URL
});
});
}
Em um novo arquivo chamado SidePanel.html, defina o botão que inicia a atividade e chame a função do main.js no carregamento do documento:
<html>
<head>
<title>Meet add-on Side Panel</title>
<script src="./main.js"></script>
</head>
<body style="width: 100%; height: 100%; margin: 0">
<div>This is the add-on Side Panel. Only you can see this.</div>
<button id="start-activity">Launch Activity in Main Stage.</button>
<script>
document.body.onload = () => {
// Library name (`helloWorld`) is defined in the webpack config.
// The function (`setUpAddon`) is defined in main.js.
helloWorld.setUpAddon();
};
</script>
</body>
</html>
Também é necessário agrupar o SDK de complementos do Meet com o main.js e expô-los em uma biblioteca. Recomendamos fazer isso por
instalando o webpack
e usando a opção library
no seu arquivo webpack.config.js:
module.exports = {
entry: './main.js',
output: {
library: 'helloWorld',
...
},
...
};
Next.js
Adicione uma nova Page para mostrar o painel lateral. Essa página cria uma sessão de complemento e um cliente do painel lateral no carregamento e inicia a atividade quando um botão é clicado:
'use client';
import { useEffect, useState } from 'react';
import {
meet,
MeetSidePanelClient,
} from '@googleworkspace/meet-addons/meet.addons';
export default function Page() {
const [sidePanelClient, setSidePanelClient] = useState<MeetSidePanelClient>();
// Launches the main stage when the main button is clicked.
async function startActivity(e: unknown) {
if (!sidePanelClient) {
throw new Error('Side Panel is not yet initialized!');
}
await sidePanelClient.startActivity({
mainStageUrl: 'MAIN_STAGE_URL'
});
}
/**
* Prepares the add-on Side Panel Client.
*/
useEffect(() => {
(async () => {
const session = await meet.addon.createAddonSession({
cloudProjectNumber: 'CLOUD_PROJECT_NUMBER',
});
setSidePanelClient(await session.createSidePanelClient());
})();
}, []);
return (
<>
<div>
This is the add-on Side Panel. Only you can see this.
</div>
<button onClick={startActivity}>
Launch Activity in Main Stage.
</button>
</>
);
}
Substitua:
CLOUD_PROJECT_NUMBER: o número do projeto na nuvem do Google Cloud.
MAIN_STAGE_URL: o URL do palco principal que você cria na próxima etapa.
Criar uma página do palco principal
O palco principal é a área de foco principal em que você pode mostrar o complemento se um espaço de trabalho maior for necessário. O palco principal é aberto quando a atividade é iniciada. Para acessar os recursos do SDK de complementos do Meet
no palco principal, use a interface MeetMainStageClient.
O exemplo de código a seguir mostra um exemplo de uma página do palco principal que renderiza uma div personalizada para dizer "Hello, world!":
JS básico + Webpack
Adicione a seguinte função ao arquivo main.js que você já criou para que o cenário principal possa sinalizar que terminou de carregar:
/**
* Prepares the add-on Main Stage Client, which signals that the add-on has
* successfully launched in the main stage.
*/
export async function initializeMainStage() {
const session = await meet.addon.createAddonSession({
cloudProjectNumber: CLOUD_PROJECT_NUMBER,
});
await session.createMainStageClient();
}
Em seguida, adicione um novo arquivo MainStage.html, que chama a nova função initializeMainStage e mostra o conteúdo personalizado "hello, world":
<html>
<body style="width: 100%; height: 100%; margin: 0">
<div>
This is the add-on Main Stage. Everyone in the call can see this.
</div>
<div>Hello, world!</div>
<script>
document.body.onload = () => {
helloWorld.initializeMainStage();
};
</script>
</body>
</html>
Next.js
Adicione uma Page para mostrar o palco principal. Essa página cria uma sessão de complemento e um cliente do painel lateral no carregamento e mostra o conteúdo personalizado "hello, world":
'use client';
import { useEffect } from 'react';
import { meet } from '@googleworkspace/meet-addons/meet.addons';
export default function Page() {
/**
* Prepares the add-on Main Stage Client, which signals that the add-on
* has successfully launched in the main stage.
*/
useEffect(() => {
(async () => {
const session = await meet.addon.createAddonSession({
cloudProjectNumber: 'CLOUD_PROJECT_NUMBER',
});
await session.createMainStageClient();
})();
}, []);
return (
<>
<div>
This is the add-on Main Stage.
Everyone in the call can see this.
</div>
<div>Hello, world!</div>
</>
);
}
Substitua CLOUD_PROJECT_NUMBER pelo número do projeto na nuvem do Google Cloud.
Executar a amostra
Para executar localmente, faça o seguinte:
JS básico + Webpack
Execute o webpack para agrupar o arquivo main.js com o SDK de complementos do Meet:
npx webpack
Abra os arquivos SidePanel.html e MainStage.html em qualquer navegador.
MainStage.html
Next.js
Execute o Next:
next dev
Navegue até http://localhost:3000/sidepanel ou http://localhost:3000/mainstage. Isso precisa ser igual à
implantação da amostra do Next.js no GitHub
em um SidePanel.html
e MainStage.html
nas páginas do GitHub.
Implantar o complemento do Meet
A implantação de um complemento é um processo de duas etapas:
Primeiro, é necessário implantar o código deste guia de início rápido em um site de sua propriedade, usando a solução de implantação de sua preferência. Os complementos oficiais do Google Meet de amostra no GitHub são implantados usando um fluxo de trabalho do GitHub nas páginas do GitHub, mas também é possível usar ferramentas como o Firebase Hosting.
Depois que o aplicativo for implantado, configure a implantação do complemento seguindo as instruções em Implantar um complemento do Meet. Seguir esse guia de implantação cria o complemento final do Meet, que é um iframe no Meet do aplicativo implantado na etapa um.
Executar a amostra
Acesse o Meet.
Clique no botão de ferramentas da reunião
.Na seção Seus complementos, o complemento vai aparecer. Selecione-o para executar o complemento.
Adicionar mais recursos
Agora que você tem um painel lateral e um palco principal básicos, é possível começar a adicionar outros recursos ao complemento:
- Colaboração usando um complemento do Meet
- Mensagens entre o palco principal e o painel lateral
- Promoção do complemento
Recomendamos usar os complementos de exemplo do Meet no GitHub como referências para criar esses recursos.