Transferimos estudantes para udalenka em 1 dia

imagem

Já em 16 de março, estávamos sentados em um espaço aberto confortável e, no dia seguinte, todo o escritório mudou-se para uma casa remota. Em um habr bastante histórias semelhantes o suficiente. Mas o específico de nossa situação não é a transferência de funcionários, mas a transferência de clientes. São mais de três mil alunos que vieram estudar em período integral, mas, por um lado, terminaram em correspondência.

O que foi feito


O departamento de treinamento de professores desenvolveu diretrizes para palestras on-line. Por exemplo, como:

Duração da aula
- 4 ., , (30-40 ), .

- 8 . ( ), ( , , , ).

, , .

Focando a atenção
, – , , . : , 15-20 , , .

(10-12 ). (30+ ), «» , , 2 . 2 . – .

Um grande trabalho recaiu sobre os funcionários da primeira e da segunda linha de suporte. De repente, milhares de dispositivos de usuário pessoal apareceram no suporte, nos quais era necessário ajudar a instalar o software necessário, emitir licenças para software específico e, de repente, o Zoom não funciona na Crimeia (que conseguiu sair de lá), no Opera com uma ajuda VPN integrada.

O zoom foi escolhido como plataforma principal.

Inicialmente, surgiu a questão com o planejamento das aulas, a criação de conferências e a informação de todos os alunos e professores.

imagem

É assim que a agenda de palestras do Zoom era nos primeiros dias. Em que todas as conferências foram criadas manualmente

imagem

E assim, quando começou de novo em 1.

Graças ao meu colega, ele prontamente fumou a API Zoom e estragou a criação automática da conferência de acordo com o cronograma. E também informações automáticas sobre isso.

E aqui está um link para os trabalhos de Sergey sobre como criar conferências usando a API Zoom.

Por sua vez, quero compartilhar a experiência na integração de plataformas no aplicativo Android.
No nosso caso de usuário, isso se mostrou muito conveniente, porque As conferências são criadas no servidor e seus identificadores são transferidos para a programação no telefone.

imagem

Interface de programação integrada ao Zoom

Agora, vamos ver como funciona.
Código-fonte

1. Importe duas bibliotecas do SDK : commonlib e mobilertc. Esta é provavelmente a fase mais triste, porque seu aplicativo fica 80 megabytes mais pesado.

2. Implementamos InitAuthSDKCallback, MeetingServiceListener em nossa atividade ou fragmento. Para que o zoom funcione, é necessária uma API mínima de 21 (minSdkVersion 16 é indicada na documentação do site, mas não é atualizada muito rapidamente, é melhor focar nos exemplos de amostras provenientes do SDK).

Ao criar um fragmento, inicialize o SDK

Inicializar o SDK do Zoom
private View view;
private ZoomSDK mZoomSDK;
@Override
public View onCreateView(
            LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_first, container, false);

        mZoomSDK = ZoomSDK.getInstance();
        if (mZoomSDK.isLoggedIn()) {
            getActivity().onBackPressed();
            return null;
        }

        InitAuthSDKHelper.getInstance().initSDK(getContext(), this);
        if (mZoomSDK.isInitialized()) {

            ZoomSDK.getInstance().getMeetingService().addListener(this);
            ZoomSDK.getInstance().getMeetingSettingsHelper().enable720p(true);
        }

        return view;
}


Para fazer isso, crie a classe InitAuthSDKHelper e chame a função:

initSDK
public void initSDK(Context context, InitAuthSDKCallback callback) {
        if (!mZoomSDK.isInitialized()) {
            mInitAuthSDKCallback = callback;

            ZoomSDKInitParams initParams = new ZoomSDKInitParams();
//            initParams.jwtToken = SDK_JWTTOKEN;
            initParams.appKey = SDK_KEY;
            initParams.appSecret = SDK_SECRET;
            initParams.enableLog = true;
            initParams.logSize = 50;
            initParams.domain = WEB_DOMAIN;
            initParams.videoRawDataMemoryMode = ZoomSDKRawDataMemoryMode.ZoomSDKRawDataMemoryModeStack;
            mZoomSDK.initialize(context, this, initParams);
        }
}


Aqui prestamos atenção aos seguintes parâmetros:

appKey e appSecret - este é o identificador e a chave secreta do seu aplicativo que você cria no site de zoom (leva cerca de 1 minuto), registrado como desenvolvedor.

Na prática, é fortemente desencorajado usá-los para identificação.
Em vez disso, você deve usar o parâmetro jwtToken , como está escrito aqui .

Conexão de conferência
private AutoCompleteTextView idMeeting;
private AutoCompleteTextView idDisplayName;

private void onClickJoin() {
        if(!mZoomSDK.isInitialized())
        {
            Toast.makeText(getContext(),"ZoomSDK has not been initialized 
            successfully",Toast.LENGTH_SHORT).show();
            InitAuthSDKHelper.getInstance().initSDK(getContext(), this);
            return;
        }

if (ZoomSDK.getInstance().getMeetingSettingsHelper().isCustomizedMeetingUIEnabled()) {
   ZoomSDK.getInstance().getSmsService().enableZoomAuthRealNameMeetingUIShown(false);
} else {
   ZoomSDK.getInstance().getSmsService().enableZoomAuthRealNameMeetingUIShown(true);
}

        String number = idMeeting.getText().toString();
        String name = idDisplayName.getText().toString();

        JoinMeetingParams params = new JoinMeetingParams();
        params.meetingNo = number;
        params.displayName = name;
        ZoomSDK.getInstance().getMeetingService().joinMeetingWithParams(getContext(), params);
}


imagem

Esta implementação usa a interface nativa. Mas a possibilidade de personalização é suportada.

achados


  1. O processo de treinamento (com exceção dos casos em que são necessários workshops e equipamentos especiais) pode ser transferido on-line.
  2. Uma abordagem focada e sistemática é importante para eliminar o zoológico de ferramentas de comunicação que todo tutor usará.
  3. Se o processo de treinamento no seu back-end foi estabelecido anteriormente, a introdução de conferências no aplicativo móvel não levará muito tempo.

All Articles