Вы можете делать это в скриптовом движке на сервере. Или вы хотите это делать через REST? Опишите подробнее, пожалуйста.
Чат со мной
Чат со мной
Чат со мной
Отправляю запрос
{
"cmd" : "0017",
"ServerKey" : "MyChat_token",
"APIStype" : "mydata",
"UIN" : 47,
"GroupID" : 15
}
на http://10.4.173.125:8081/API/?data= или http://10.4.173.125:8081/API/
получаю ошибку:
"cmd":1,"Error":30,"hash":"OBD7_45_0V1NoWQ","CMD":"6"
UIN пользователя -47 корректный
id группы- 15 определил через скрипт.
Отдельной функции добавления юзера в общий список контактов через Integration API ещё нет, но это можно сделать скриптом.
Чат со мной
var
iUIN,x: integer;
iGroupID: integer;
sUserNameJSON,sDomaneNam,sMsg: string;
begin
iUIN:=56;
sUserNameJSON := mGetUserDataAsJSON(iUIN, 'DomainName');
JSONGetString(sUserNameJSON, 'DomainName', sDomaneNam);
mLogScript(sDomaneNam, 'Домен');
if sDomaneNam = 'Viber' then begin
iGroupID := mGetDepartmentIDByTextPath('Абоненты\VIBER');
mLogScript(sDomaneNam, 'Viber') end else
if sDomaneNam = 'Telegram' then begin
iGroupID := mGetDepartmentIDByTextPath('Абоненты\TELEGRAM');
mLogScript(sDomaneNam, 'Telegram') end else
if sDomaneNam = 'VK' then begin
iGroupID := mGetDepartmentIDByTextPath('Абоненты\ВКОНТАКТЕ');
mLogScript(sDomaneNam, 'ВК') end else
iGroupID := mGetDepartmentIDByTextPath('Абоненты');
x := mAddUserToCommonContacts(iUIN,iGroupID);
case x of
0: sMsg := 'all Ok!';
-1: sMsg := 'user already is in the common contact list';
-2: sMsg := 'wrong GroupID';
-3: sMsg := 'user UIN does not exist';
-4: sMsg := 'you can''t use UIN = 0';
end;
mLogScript(sMsg, IntToStr(iGroupID));
end.
У меня в качестве домена при создании пользователя через API указывается принадлежность к мессенджеру: VIBER, TELEGRAM или ВКОНТАКТЕ. Соответственно, есть соответствующие списки.
Данный скрипт переносит пользователя с iUIN:=56 в нужный- все работает.
Но в OnRegisrtrered пока не заработало, допиливаю.
Пробовал разные варианты, для проверки я создал группу MyGroupForAllNewUsers и и добавил скрипт из примера:
procedure OnRegistered(iCID, iUIN: integer; var iRole: integer; var bBlocked: boolean);
var
sGroupName: string;
x: integer;
begin
sGroupName := mGetRoleNameByID(iRole);
if sGroupName = 'Guests' then x := mGetRoleIDByName('MyGroupForAllNewUsers');
if x <> -1 then iRole := x;
end;
begin
end.
но ничего не происходит
Чат со мной
MyGroupForAllNewUsers- это и группа пользователей и список, и список контактов, и группа прав. Для проверки везде создал.
Должна быть группа пользователей, группы прав и контакты тут не при чём.
Чат со мной
Меня сейчас содержимое скрипта не интересует. Мне важно, чтобы хоть какой-то скрипт выполнился по событию "Регистрация нового пользователя".
Я делаю следующее:
1. Создаю скрипт в разделе OnRegistered
2. Сам скрипт:
// ---------------------------------------
// Script created by admin (UIN 1)
// 12.11.2020 10:25:41
// ---------------------------------------
procedure OnRegistered(iCID, iUIN: integer; var iRole: integer; var bBlocked: boolean);
begin
mLogScriptToDisk(mHTTPSendPostMessage('google.com', '', '', 2000));
mLogScriptToDisk(mHTTPSendPostMessage('127.0.0.1:9999', '', '', 2000));
end;
begin
end.
3. Ставлю галочку активации.
Через API создаю нового пользователя. Пользователь создается. Соответственно, после создания пользователя должен запуститься этот скрипт. В логах пусто.
Проверял этот скрипт в разделе Library-Custom - все работает. В логах информация как в доке появляется. При создании пользовается- нет.
Я поставил в план работ, сделаем. Спасибо, что описали полезный кейс.
Чат со мной
Было бы отлично, чтобы срабатывало и при регистрации через API.
Возбуждать скриптовое событие при "дёргании" функции создания юзера не будем.
Чат со мной