async function delay(ms) {
await new Promise(resolve => setTimeout(resolve, ms));
}
async function createWhatapp(actorId, businessId, accessToken) {
const rawJson = {
input: {
client_mutation_id: "3",
actor_id: 100003936896491,
app_id: "1128746745761202",
log_session_id: "WBxP--1149220992-1213723823",
business_id: 1434153683876038,
api_account_type: "SELF",
creation_source: "BUSINESS_MANAGER",
friendly_name: "Bm ok vh",
timezone_id: 132,
primary_funding_source: null,
on_behalf_of_business_id: null,
partner_business_id: businessId,
page_id: null,
product: "SELF",
disable_automatic_sharing: null,
obo_onboarding_info_input: null
}
};
const encodedJson = encodeURIComponent(JSON.stringify(rawJson));
const url = `https://graph.facebook.com/graphql?method=post&locale=en_US&pretty=false&format=json&fb_api_req_friendly_name=useCreateWhatsAppBusinessAPIAccountMutation_CreateWhatsAppBusinessAPIAccountMutation&doc_id=29701466519469036&fb_api_caller_class=RelayModern&server_timestamps=true&variables=${encodedJson}&access_token=${accessToken}`;
try {
const response = await fetch(url, {
method: 'GET',
credentials: 'include'
});
const data = await response.json();
if (data?.data?.xfb_create_whatsapp_business_api_account?.whatsapp_business_account?.id) {
return {
success: true,
id: data.data.xfb_create_whatsapp_business_api_account.whatsapp_business_account.id
};
} else {
return {
success: false,
error: data
};
}
} catch (error) {
return {
success: false,
error: error
};
}
}
async function createMultiWhatapp(count, actorId, businessId, accessToken) {
const idList = [];
for (let i = 0; i < count; i++) {
//console.log(`🔄 Đang tạo tài khoản ${i + 1} ...`);
const result = await createWhatapp(actorId, businessId, accessToken);
if (result.success) {
idList.push(result.id);
//console.log(`✅ Tạo tài khoản ${i + 1} thành công > ${result.id}`);
} else {
//console.log(`❌ Tạo tài khoản ${i + 1} lỗi`);
//console.log("📄 Response lỗi:", result.error);
}
const delay = 2000 + Math.floor(Math.random() * 1000); // 2–3 giây
await new Promise(resolve => setTimeout(resolve, delay));
}
//console.log("\n✅ Danh sách WhatsApp Business Account ID:");
//console.log(idList.join('\n'));
return idList;
}
//hàm lấy all id tkqc
async function getAllTkqc(businessId, accessToken) {
const rawJson = {
"assetType": "AD_ACCOUNT",
"businessID": businessId
};
const encodedJson = encodeURIComponent(JSON.stringify(rawJson));
const url = `https://graph.facebook.com/graphql?method=post&locale=en_US&pretty=false&format=json&fb_api_req_friendly_name=BizKitSettingsBusinessAssetGroupAddAssetsListContainerQuery&doc_id=23965670049692398&fb_api_caller_class=RelayModern&server_timestamps=true&variables=${encodedJson}&access_token=${accessToken}`;
try {
const response = await fetch(url, {
method: 'GET',
credentials: 'include'
});
const data = await response.json();
if (data) {
return {
success: true,
data: data
};
} else {
return {
success: false,
error: data
};
}
} catch (error) {
return {
success: false,
error: error
};
}
}
//add all tkqc vào bm aset
async function addAllTkqc(businessId, bagID, ids, accessToken) {
const rawJson = {
"businessID": businessId,
"bagID": bagID,
"assets": [
{
"asset_ids": ids,
"asset_type": "AD_ACCOUNT"
}
],
"scopedUserOrRequestIDs": null,
"assetPermissions": null
};
const encodedJson = encodeURIComponent(JSON.stringify(rawJson));
const url = `https://graph.facebook.com/graphql?method=post&locale=en_US&pretty=false&format=json&fb_api_req_friendly_name=BizKitSettingsBusinessAssetGroupAddAssetsMutation&doc_id=9718429838241020&fb_api_caller_class=RelayModern&server_timestamps=true&variables=${encodedJson}&access_token=${accessToken}`;
try {
const response = await fetch(url, {
method: 'GET',
credentials: 'include'
});
const data = await response.json();
if (data) {
return {
success: true,
data: data
};
} else {
return {
success: false,
error: data
};
}
} catch (error) {
return {
success: false,
error: error
};
}
}
//xóa whatapp
async function deleteWhatapp(actor_id, waba_id, accessToken) {
const rawJson = {
"input": {
"client_mutation_id": "23",
"actor_id": actor_id,
"waba_id": waba_id
}
};
const encodedJson = encodeURIComponent(JSON.stringify(rawJson));
const url = `https://graph.facebook.com/graphql?method=post&locale=en_US&pretty=false&format=json&fb_api_req_friendly_name=useDeleteWhatsAppBusinessAccountMutation&doc_id=9902575596489138&fb_api_caller_class=RelayModern&server_timestamps=true&variables=${encodedJson}&access_token=${accessToken}`;
try {
const response = await fetch(url, {
method: 'GET',
credentials: 'include'
});
const data = await response.json();
if (data) {
return {
success: true,
data: data
};
} else {
return {
success: false,
error: data
};
}
} catch (error) {
return {
success: false,
error: error
};
}
}
async function deleteAllWhatapp(actor_id, businessID, accessToken) {
const rawJson = {
"businessID": businessID,
"assetTypes": [
"WHATSAPP_BUSINESS_ACCOUNT"
],
"searchTerm": null,
"orderBy": null,
"assetFilters": {
"whatsapp_business_account_statuses": [
"ACTIVE"
]
},
"globalFilters": {},
"shouldSkip": false,
"shouldCountAdmin": false,
"count": 16
};
const encodedJson = encodeURIComponent(JSON.stringify(rawJson));
const url = `https://graph.facebook.com/graphql?method=post&locale=en_US&pretty=false&format=json&fb_api_req_friendly_name=BizKitSettingsBusinessAssetsListContainerQuery&doc_id=24345726961678741&fb_api_caller_class=RelayModern&server_timestamps=true&variables=${encodedJson}&access_token=${accessToken}`;
try {
const response = await fetch(url, {
method: 'GET',
credentials: 'include'
});
const data = await response.json();
const edges = data.data.business.connected_objects.edges;
const assetIDs = edges.map(edge => edge.node.assetID);
//console.log(assetIDs);
for (const id of assetIDs) {
const _deleteWhatapp = await deleteWhatapp(actor_id, id, accessToken);
//console.log(_deleteWhatapp);
if(_deleteWhatapp.success){
//console.log(`ID ${id} xóa ok`);
}
else{
//console.log(`ID ${id} xóa lỗi`);
}
}
} catch (error) {
return {
success: false,
error: error
};
}
}
async function swapIdTkqc(assetID, businessId, accessToken) {
const rawJson = {
"assetID": assetID,
"businessID": businessId
};
const encodedJson = encodeURIComponent(JSON.stringify(rawJson));
const url = `https://graph.facebook.com/graphql?method=post&locale=en_US&pretty=false&format=json&fb_api_req_friendly_name=BizKitSettingsAssetStatusBannerQuery&doc_id=9840162019405661&fb_api_caller_class=RelayModern&server_timestamps=true&variables=${encodedJson}&access_token=${accessToken}`;
try {
const response = await fetch(url, {
method: 'GET',
credentials: 'include'
});
const data = await response.json();
if (data?.data?.business_object_rendered_in_ui?.business_object_ui_id) {
return {
success: true,
id: data.data.business_object_rendered_in_ui.business_object_ui_id
};
} else {
return {
success: false,
error: data
};
}
} catch (error) {
return {
success: false,
error: error
};
}
}
(async () => {
const business_asset_groups = "751647118024241"; // ID GR
const actor_id = "100003936896491"; // u ID
const businessId = "1434153683876038"; // ID BM
const accessToken = "EAAGNO4a7r2wBPOc1dni6Cd3FoWjrZBaTfgv272dcARkVUm4SydkjWh5BmN3oEwp4QIOpqmBo46LI9g5cO4L5AR9UcKldCvIP6ED30crh17dh1ye6vV1DuwS0Lro0XBYrVanLtcGXkr52dV24Qhn5rPzxdz6PhuDLpnCCCJphDcMchX13qzmy3CP00L2jJEL9N6J00hOHQpwZDZD"; // token
const So_Vong_Lap = 500;
let sum = 0;
for (let i = 0; i < So_Vong_Lap; i++) {
try {
//xóa hết whatapp ra khỏi bm
//console.log("Xóa hết whatapp cũ khỏi bm ...");
await deleteAllWhatapp(actor_id, businessId, accessToken);
//tạo 5 whatapp
//console.log("Đang tạo whatapp ...");
const _createWhatapp = await createMultiWhatapp(5, actor_id, businessId, accessToken);
await delay(3 * 60 * 1000);
//lấy ra 5 tkqc
let _getAllTkqc = await getAllTkqc(businessId, accessToken);
//console.log(_getAllTkqc);
let edges = _getAllTkqc.data.data.business.connected_objects.edges;
let idList = edges
.filter(edge => edge.node.business_object_name.includes("Read-Only"))
.map(edge => edge.node.business_object_id);
//let idList = edges.map(edge => edge.node.business_object_id);
//console.log(idList);
while (idList.length < _createWhatapp.length) {
//console.log("Chờ hiện đủ tkqc ...");
await delay(5000);
_getAllTkqc = await getAllTkqc(businessId, accessToken);
edges = _getAllTkqc.data.data.business.connected_objects.edges;
idList = edges
.filter(edge => edge.node.business_object_name.includes("Read-Only"))
.map(edge => edge.node.business_object_id);
//console.log(idList);
}
//console.log(idList.join('\n'));
//thêm tất cả tkqc group
//console.log("Thêm tất cả tkqc vào group ...");
const _addAllTkqc = await addAllTkqc(businessId,business_asset_groups, idList, accessToken);
//console.log("Tổng số tkqc add vào group thành công: " + _addAllTkqc.data.data.business_settings_add_assets_and_users_to_business_asset_group.success_count);
//chuyển đổi ID tkqc
const idTkqcList = [];
for (const id of idList) {
const _swapIdTkqc = await swapIdTkqc(id, businessId, accessToken);
//console.log(_swapIdTkqc);
if(_swapIdTkqc.success){
//console.log(_swapIdTkqc.id);
idTkqcList.push(_swapIdTkqc.id);
}
}
//console.log("========== Danh sách ID TKQC ==========");
console.log(idTkqcList.join('\n'));
sum=sum+idTkqcList.length;
console.log(`[${i+1}/${So_Vong_Lap}] Đã tạo duoc ${sum} tài khoản ...`);
//xóa hết whatapp ra khỏi bm
//console.log("Xóa hết whatapp mới khỏi bm ...");
await deleteAllWhatapp(actor_id, businessId, accessToken);
}
catch{}
}
})()