...

Создаем канал и выдаем доступ к нему.

Тема в разделе "Примеры сценариев", создана пользователем sabir, 15 май 2023.

Метки:
  1. sabir

    sabir Участник

    Для того чтобы создать канал нам потребуется токен пользователя, найти его можно в консоли разработчика в вкладке сеть или же получить целенаправленно зная логин и пароль пользователя, метод получения по лог/пас описан тут - https://community.elma365.com/ru/threads/2049/

    Для примера соберем страницу.

    Добавим в контекст следующие поля:

    1. "Название канала" тип строка, имя свойства - channel_name.
    2."bool_text" тип Выбор «да/нет», имя свойства - bool_text.
    3."Пользователи" тип Пользователи/Несколько, имя свойства - users. (Пользователи которые будут подписаны на канал)
    4."Ссылка на канал" тип строка, имя свойства - channel_link.
    upload_2023-5-14_23-23-47.png
    Вынесем поля на форму.


    upload_2023-5-14_23-25-10.png
    Также добавим виджет надпись и зададим следующий настройки.​

    upload_2023-5-14_23-27-28.png
    В вкладке системные зададим HTML стили

    Код:
    
    text-aligncenter;
    colorrgb(2246245);
    margin-bottom10px;
    margin-left40%;
    font-weightbold;
    margin-top10px
    Далее зададим настройки кнопке.


    upload_2023-5-14_23-32-1.png

    Перейдем в вкладку сценарии и добавим следующий код.


    Код:
    
    declare const console:any;
    declare const 
    window:any;

    type User_id = {
        
    id:string,
        
    type:string
    }

    async function create_channel(): Promise<void> {

        if(
    Context.data.channel_name != "" && Context.data.channel_name != undefined){

            if(
    Context.data.channel_name.trim() != ""){
       
                const 
    TOKEN "eyJhbGciОiJSUzUxMiIsInR5cCI6VCJ1.eyJjb21wYW11IjoiaGVhZCIsInV11XJJZCI1Ijc3MWU0M2NiLTYwMTАtNGNmYy1iZDg1LVkNyIsIm11bmVyIjpmYWxzZSwiaXNQb3J0YWwiOmZhbHNlLCJzZXNzaW9uSWQiOiI0YWRkY1M1Ny00MTVkLTQwMzMtYjk1Mi0zODg0NmZjYTA5ZDkiLCJwcml1aWxlZ2VzIjpbInN5c3RlbSIsImFkbWluaXN0cmF0aW9uIl0sIm5lZWRDaGFuZ2VQYXNzd29yZCI6ZmFsc2UsImNyZWF0ZWRBdCI6MTY4NDA4ODQyOSwiZXhwIjoxNjg2NTExOTE3LCJpYXQiOjE1ODQwOTI1OTcsImlzcyI6ImFwaSJ9.Kpgns4aXgljvIZ0ix6UaHvvmUnYehoiPp6WqrQsI27TgH-6gLS31ZxLuJR5Var111111111111111111111yOUDQrNQGCTDI3h9K6b38sd5QUkYJuPOvitTSvplHnkuoGXg8HzlkZXS1111111111111111111111111111"

                
    const res await fetch('http://elma.111.ru/api/feed/channels/', {
                    
    method'GET',
                    
    headers: {
                        
    Authorization'Bearer '+TOKEN
                    
    }
                });

                
    let res_json await res.json();

                
    let bool_name true;

                for(
    let name_channel of res_json){

                    if(
    name_channel["name"] == Context.data.channel_name){

                        
    bool_name false;

                        
    Context.data.bool_text true;

                    }

                }

                if(
    bool_name){

                    const 
    res_cnl await fetch('http://elma.111.ru/api/feed/channels', {
                        
    method'PUT',
                        
    headers: {
                            
    Authorization'Bearer '+TOKEN
                        
    },
                        
    bodyJSON.stringify({
                            
    nameContext.data.channel_name
                        
    })
                    });

                    const 
    product_cnl await res_cnl.json();

                    
    let arr_idUser_id [] = [];

                    for(
    let user of Context.data.users!){

                        
    let new_record = {} as User_id;

                        
    let user_app await user.fetch();

                        
    let user_id user_app.data.__id;
                        
    console.log(user_id);
                        
    new_record.id user_id;
                        
    new_record.type "user";

                        
    arr_id.push(new_record);

                    }

                    
    let body JSON.stringify(arr_id);

                    const 
    res_user await fetch("http://elma.111.ru/api/feed/channels/"+product_cnl["__id"]+"/members", {
                        
    method'POST',
                        
    headers: {
                            
    Authorization'Bearer '+TOKEN
                        
    },
                        
    bodybody
                   
                    
    });

                    
    Context.data.channel_link "http://elma.111.ru/messages/channels/"+product_cnl["__id"];

                }

            }else{

                
    window.alert("Не корректное название канала!");

            }

        }else{

            
    window.alert("Не корректное название канала!");

        }
    }
    Результат.

    upload_2023-5-14_23-40-16.png

    upload_2023-5-14_23-42-36.png

    upload_2023-5-14_23-43-18.png

    Вложения:

    Последнее редактирование: 15 май 2023