Проект

Общее

Профиль

Скрипт для интеграции TEGU с ВКС MTS Link

func create_template(headers, name, desc, start_time, end_time){
    query = {
        "name": name,
        "description": desc,
        "type": "meeting",
        "accessSettings[isPasswordRequired]": "0",
        "accessSettings[isModerationRequired]": "1",
        "accessSettings[isRegistrationRequired]": "0",
        "startsAtTimestamp": start_time,
        "endsAtTimestamp": end_time,
    }

    res = http("POST", "https://userapi.mts-link.ru/v3/events", headers, map2query(query), 30)
    code = res[0]
    body = res[1]
    err = res[2]

    if err != "" {
        print(err)
        exit(1)
    }

    if code != 201 {
        print("create template fail with code", code, "and body: ", body)
        exit(1)
    }

    m = json2map(body)
    return m.eventId
}

func create_event(headers, name, desc, event_id, start_time){
    query = {
        "name": name,
        "description": desc,
        "accessSettings[isPasswordRequired]": "0",
        "accessSettings[isModerationRequired]": "1",
        "accessSettings[isRegistrationRequired]": "0",
        "startsAtTimestamp": start_time,
        "startType": "autostart",
    }

    res = http("POST", "https://userapi.mts-link.ru/v3/events/" + str(event_id) + "/sessions", headers, map2query(query), 30)
    code = res[0]
    body = res[1]
    err = res[2]

    if err != "" {
        print(err)
        exit(1)
    }

    if code != 201 {
        print("create event fail with code", code, "and body: ", body)
        exit(1)
    }

    m = json2map(body)
    return [m.link, m.eventSessionId]
}

func set_moderator(headers, event_session_id, email){
    query = {
        "email": email,
        "role": "ADMIN",
    }

    res = http("POST", "https://userapi.mts-link.ru/v3/eventsessions/" + str(event_session_id) + "/register", headers, map2query(query), 30)
    code = res[0]
    err = res[2]

    if err != "" {
        print(err)
        exit(1)
    }

    if code != 201 {
        print("set moderator fail with code", code, "and body: ", res[1])
        exit(1)
    }

    return nil
}

func change_template(headers, event_id, name, desc, start_time, end_time){
    query = {}

    if name != nil {
        query["name"] = name
    }
    if desc != nil {
        query["description"] = desc
    }
    if start_time != nil {
        query["startsAtTimestamp"] = start_time
    }
    if end_time != nil {
        query["endsAtTimestamp"] = end_time
    }

    if len(query) == 0 {
        return nil
    }

    res = http("PUT", "https://userapi.mts-link.ru/v3/organization/events/" + str(event_id), headers, map2query(query), 30)
    code = res[0]
    err = res[2]

    if err != "" {
        print(err)
        exit(1)
    }

    if code != 204 {
        print("change template fail with code", code, "and body: ", res[1])
        exit(1)
    }

    return nil
}

func change_event(headers, event_session_id, name, desc, start_time){
    query = {}

    if name != nil {
        query["name"] = name
    }
    if desc != nil {
        query["description"] = desc
    }
    if start_time != nil {
        query["startsAtTimestamp"] = start_time
    }

    if len(query) == 0 {
        return nil
    }

    res = http("PUT", "https://userapi.mts-link.ru/v3/eventsessions/" + str(event_session_id), headers, map2query(query), 30)
    code = res[0]
    err = res[2]

    if err != "" {
        print(err)
        exit(1)
    }

    if code != 204 {
        print("change event fail with code", code, "and body: ", res[1])
        exit(1)
    }

    return nil
}

func delete_template(headers, ctx){
    res = http("DELETE", "https://userapi.mts-link.ru/v3/organization/events/" + str(ctx.event_id), headers, nil, 30)
    code = res[0]
    err = res[2]

    if err != "" {
        print(err)
        exit(1)
    }

    if code != 204 {
        print("delete template fail with code", code, "and body: ", res[1])
        exit(1)
    }

    return nil
}

func create_meet(headers, ctx){
    name = EVENT_SUBJECT
    description = EVENT_MESSAGE // здесь будет передано описание события (может присутствовать конф. информация). можно заменить на "" 
    start_time = EVENT_START_DATE + "T" + EVENT_START_TIME + "+00:00" 
    end_time = EVENT_FINISH_DATE + "T" + EVENT_FINISH_TIME + "+00:00" 
    moderator = EVENT_CREATOR

    event_id = create_template(headers, name, description, start_time, end_time)
    event = create_event(headers, name, description, event_id, start_time)

    link = event[0]
    event_session_id = event[1]

    set_moderator(headers, event_session_id, moderator)

    ctx.event_id = event_id
    ctx.event_session_id = event_session_id
    ctx.name = name
    ctx.description = description
    ctx.start_time = start_time
    ctx.end_time = end_time

    return link
}

func change_meet(headers, ctx) {
    name = EVENT_SUBJECT
    description = EVENT_MESSAGE // здесь будет передано описание события (может присутствовать конф. информация). можно заменить на "" 
    start_time = EVENT_START_DATE + "T" + EVENT_START_TIME + "+00:00" 
    end_time = EVENT_FINISH_DATE + "T" + EVENT_FINISH_TIME + "+00:00" 

    new_name = nil
    new_description = nil
    new_start_time = nil
    new_end_time = nil

    if name != ctx.name {
        new_name = name
    }
    if description != ctx.description {
        new_description = description
    }
    if start_time != ctx.start_time {
        new_start_time = start_time
    }
    if end_time != ctx.end_time {
        new_end_time = end_time
    }

    change_template(headers, ctx.event_id, new_name, new_description, new_start_time, new_end_time)
    change_event(headers, ctx.event_session_id, new_name, new_description, new_start_time)

    if new_name != nil {
        ctx.name = new_name
    }
    if new_description != nil {
        ctx.description = new_description
    }
    if new_start_time != nil {
        ctx.start_time = new_start_time
    }
    if new_end_time != nil {
        ctx.end_time = new_end_time
    }

    return nil
}

msg = nil

// ключ из личного кабинета
mtsAuthKey = "hghjgjh43fedcdedec03e6a3faba" 

headers = {
    "x-auth-token": mtsAuthKey,
    "Content-Type": "application/x-www-form-urlencoded",
}

if EVENT_ACTION == "create" {
    link = create_meet(headers, EVENT_CONTEXT)
    EVENT_CONTEXT.link = link
    msg = "Ссылка на видеоконференцию: " + link
} else if EVENT_ACTION == "update" {
    change_meet(headers, EVENT_CONTEXT)
    msg = "Ссылка на видеоконференцию: " + EVENT_CONTEXT.link
} else if EVENT_ACTION == "cancel" {
    delete_template(headers, EVENT_CONTEXT)
}

if msg != nil {
    print(msg)
}