Скрипт для интеграции 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)
}