GS-meta

update token meta di google-sheet

var clid = "129809356xxxxxx"             //client_id
var sec = "925xxxxxxxxxxxxxxxxxxxxxx"    //client_secret
var old = sh1.getRange("E2").getValue()  //cell lokasi token lama
var url1 = "https://graph.facebook.com/v15.0/oauth/access_token?grant_type=fb_exchange_token&client_id="+clid+"&client_secret="+sec+"&fb_exchange_token="+old
var res = UrlFetchApp.fetch(url1);
console.log(res.getContentText())
var js = JSON.parse(res.getContentText());
sh1.getRange("E2").setValue(js['access_token']); //update token ke cell
sh1.getRange("F2").setValue(js['expires_in']);   //update expired

anu-webhook-meta

dipaksa respon 200 OK HTTPS


function doGet(e) {
try {
  var x = e['parameter']['hub.challenge'].length
  var ch = e['parameter']['hub.challenge']
  te = ContentService.createTextOutput(ch)
  return te
} catch(err) { 
  var to = ContentService.createTextOutput("200 OK HTTPS")
  return to
}

}///end doGet

contoh reply pesan

function gowa30(num,text){

id = "113778281xxxxx" //Phone number ID: 113778281xxxxxxx
text = text+"\nini adalah echo" //contoh pesan balasan

if(text.length<2){return false;}
if(text==" "){return false;}

var bx = sh1.getRange("E2").getValue() //bearer auth akun
var tee = {
  "body": text
}
var da = {
  "messaging_product":"whatsapp",
  "to": num,
  "text": JSON.stringify(tee)
        }
var hdx = {"Authorization" : "Bearer "+bx}
var url1 = "https://graph.facebook.com/v15.0/"+id+"/messages"
var spost =
    {
      "method" : "POST",
      "muteHttpExceptions": true,
      "headers" : hdx,
      "payload" : da,
    };
h = UrlFetchApp.fetch(url1, spost);
console.log(h.getContentText())
return true
}////


contoh doPost (handle respon api meta)


function doPost(e) {

try { ///area bot tele
  var data = JSON.parse(e.postData.contents);
  var text = data.message.text;
  var text0 = data.message.text;
  var id = data.message.chat.id;

if (id=="242539199" && text.substring(0, 1) == ("@")){
    var ss = text0.split('@')
    gowa(ss[1],ss[2])  
    return

}else if (id=="242539199" && text.substring(0, 1) == ("#")){
    var rr = text.split('#')
    gowa2(rr[1],rr[2])
    return

}else if (id=="242539199" && text.substring(0, 6) == ("/start")){
    notif("oke") 
    return
}
} catch(err) { console.log("do-nothing") }
/////////////////////////////////////////////////////



try { ///area bot WA text
  var data = JSON.stringify(e)
  sh2.getRange("A1").setValue(data) 
  var dx = e['postData']['contents']
  sh2.getRange("A2").setValue(dx) 
  dx = JSON.parse(dx)
  let j = sh2.getLastRow()+1
  var id = dx['entry'][0]['changes'][0]['value']['messages'][0]['id']
  readx(id) //update jadi read
  var hp = dx['entry'][0]['changes'][0]['value']['messages'][0]['from']
  var typ = dx['entry'][0]['changes'][0]['value']['messages'][0]['type']
  var who = dx['entry'][0]['changes'][0]['value']['contacts'][0]['profile']['name']
  var mehp = dx['entry'][0]['changes'][0]['value']['metadata']['display_phone_number']

  if(typ=="text"){
  var me = dx['entry'][0]['changes'][0]['value']['messages'][0]['text']['body']
  sh2.getRange("A"+j).setValue(id)
  sh2.getRange("B"+j).setValue(hp)
  sh2.getRange("C"+j).setValue(me)
  sh2.getRange("D"+j).setValue(who)
  sh2.getRange("E"+j).setValue(mehp)



  if(mehp=="6285156911911"){ 
    notif("b01 "+who+"\n@"+hp+"@\n"+me)
    exebotwa(me,hp)
  return
  }

  if(mehp=="6285155085519"){ 
    notif("hup "+who+"\n@"+hp+"@\n"+me)
    exebotwa30(me,hp)
  return
  }

  if(mehp=="6285216955191"){ 

  notif("b02 "+who+"\n#"+hp+"#\n"+me)
  exebotwa2(me,hp)
  return
  }

  }//////

  if(typ=="image"){
  var id = dx['entry'][0]['changes'][0]['value']['messages'][0]['image']['id']
  sh2.getRange("A"+j).setValue(id)
  sh2.getRange("B"+j).setValue(hp)

  var cpt = dx['entry'][0]['changes'][0]['value']['messages'][0]['image']['caption']
  if(cpt==undefined){ cpt = "nocaption"} 

  sh2.getRange("C"+j).setValue(cpt)
  notif("@"+hp+"@\n"+id+" "+cpt)
  imarece(hp,id,cpt)
  return
  }


} catch(err) { console.log("do-nothing") }
///////////////////////////////////////////////




}///end dopost

kirim gambar (dari link)

function goima2(num,pho){
var sss = SpreadsheetApp.openById('1sWwME-6B5qEoElQIcc02aVkKxfQ9yVqEy9xW769xKb#Q#########');  //google-sheet
var sh2 = sss.getSheetByName('Sheet2');
var bx = sh2.getRange("A17").getValue()                                //ambil token
var lx = "https://raw.githubusercontent.com/macancrew/cmdx4/main/"+pho //lokasi gambar
var tee = {
  "link": lx,
  "caption": pho
}
var da = {
  "messaging_product":"whatsapp",
  "recipient_type": "individual",
  "to": num,
  "type" : "image",
  "image": JSON.stringify(tee)
        }

var hdx = {"Authorization" : "Bearer "+bx, "Content-Type": "application/json",}
var url1 = "https://graph.facebook.com/v15.0/104791942530752/messages"           //phone id 
var spost =
    {
      "method" : "POST",
      "muteHttpExceptions": true,
      "headers" : hdx,
      "payload" : da,
    };
UrlFetchApp.fetch(url1, spost);
}////////////////////////////////////

Mark Messages as Read

function readxx(mee,idx){
var sss = SpreadsheetApp.openById('1sWwME-6B5qEoElQIcc02aVkxxxxx');  //bear-lok
var sh2 = sss.getSheetByName('Sheet2');
var bx = sh2.getRange("A17").getValue()
var da = {
  "messaging_product":"whatsapp",
  "status": "read",
  "message_id": mee
        }

var hdx = {"Authorization" : "Bearer "+bx}
var url1 = "https://graph.facebook.com/v15.0/"+idx+"/messages"
var spost =
    {
      "method" : "POST",
      "muteHttpExceptions": true,
      "headers" : hdx,
      "payload" : da,
    };
UrlFetchApp.fetch(url1, spost);
}////

kirim gambar


function bacaf09(mess,pic){
var sm = SpreadsheetApp.openById('1z2Qe4xxxxxxxxx').getSheetByName('Sheet1');
var  bxx = sm.getRange("E16").getValue() //bearer
var akk = sm.getRange("H16").getValue() //id-akun


//mess = mess+"\nCode : "+rax(40)

var hdx = {"Authorization" : "Bearer "+bxx}
var da = {
            "url" : pic,
            "published" : false
        }
var url1 = "https://graph.facebook.com/v15.0/"+akk+"/photos";
var spost =
    {
      "method" : "POST",
      "muteHttpExceptions": true,
      "headers" : hdx,
      "payload" : da,
    };

var res = UrlFetchApp.fetch(url1, spost);
var res = res.getContentText()
//console.log(res)
var js = JSON.parse(res);
var idg = js['id']
console.log("idg ok : "+idg)
//return

if(idg==undefined){ console.log("idg  null"); return; }
var da0 = {
            "media_fbid": idg
          }

var da = {
            "message" : mess,
            "attached_media[0]": JSON.stringify(da0)
        }
var url1 = "https://graph.facebook.com/v15.0/"+akk+"/feed";
var spost =
    {
      "method" : "POST",
      "muteHttpExceptions": true,
      "headers" : hdx,
      "payload" : da,
    };

var res = UrlFetchApp.fetch(url1, spost);
var res = res.getContentText()
var js = JSON.parse(res);
var lx = js['id']
console.log(lx)
}////end-bacaf09///////////////////