Gửi tin nhắn qua WhatsApp


112

Vì tôi tìm thấy một số bài đăng cũ hơn, nói rằng whatsapp không hỗ trợ điều này, tôi đã tự hỏi liệu có điều gì đó đã thay đổi và liệu có cách nào để mở 'trò chuyện' whatsapp với một số mà tôi đang gửi thông qua một ý định không?


bạn đã thử nhà cung cấp hành động chia sẻ?
Basim Sherif,

Nghe có vẻ thú vị, nhưng điều đó sẽ hoạt động như thế nào. Tôi có thể chia sẻ một chuỗi (phonenumber) và nó sẽ mở whatsapp (hoặc trình chọn?), Bạn có thể cho một ví dụ nhỏ không?
Diego

2
mặc dù có ACTION_SENDTO ý định trong whatsapp, nó không được thực thi (đúng cách) do đó không thể thực hiện với một số điện thoại cụ thể [đó là những gì tôi đã tìm thấy]
Manan Sharma


tôi vẫn đang mong chờ gắn cả hình ảnh & văn bản cùng một lúc, nhưng không tìm thấy may mắn, thở dài :(
gumuruh

Câu trả lời:


180

CẬP NHẬT Vui lòng tham khảo https://faq.whatsapp.com/en/android/26000030/?category=5245251

Tính năng Nhấp để trò chuyện của WhatsApp cho phép bạn bắt đầu trò chuyện với ai đó mà không cần lưu số điện thoại của họ trong danh bạ điện thoại của bạn. Miễn là bạn biết số điện thoại của người này, bạn có thể tạo một liên kết cho phép bạn bắt đầu trò chuyện với họ.

Sử dụng: https://wa.me/15551234567

Không sử dụng: https://wa.me/+001-(555)1234567

Ví dụ: https://wa.me/15551234567?text=I 'm% 20interested% 20in% 20your% 20car% 20for% 20sale

Câu trả lời ban đầu Đây là giải pháp

public void onClickWhatsApp(View view) {

    PackageManager pm=getPackageManager();
    try {

        Intent waIntent = new Intent(Intent.ACTION_SEND);
        waIntent.setType("text/plain");
        String text = "YOUR TEXT HERE";

        PackageInfo info=pm.getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA);
        //Check if package exists or not. If not then code 
        //in catch block will be called
        waIntent.setPackage("com.whatsapp");

        waIntent.putExtra(Intent.EXTRA_TEXT, text);
        startActivity(Intent.createChooser(waIntent, "Share with"));

   } catch (NameNotFoundException e) {
        Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT)
                .show();
   }  

}

Cũng xem http://www.whatsapp.com/faq/en/android/28000012


Làm thế nào để tích hợp với nhắn tin? để người dùng có thể chọn whatsapp hoặc nhắn tin
Srikanth Pai

33
Nếu chúng ta đã có thông tin liên hệ thì có thể thêm thông tin liên hệ và gửi tin nhắn mà không cần phải chạm vào liên hệ để chọn và nhấn OK để gửi không ??
user1492955


4
Nguồn @MananMerevikSharma không nói dối ( android.googlesource.com/platform/frameworks/base/+/refs/heads/… ). Ngoài ra, nguyên tắc cơ bản của Java: một đối tượng tồn tại cho đến khi không còn bất kỳ tham chiếu nào đến chúng nữa.
JRomero

1
@MananMerevikSharma -1. Nó không "chuyển sang con trỏ null". Phần khác không bao giờ có thể đạt được. Khi WhatsApp chưa được cài đặt, Ý định vẫn được gửi, nhưng Hộp thoại mở ra thông báo rằng không có ứng dụng phù hợp. Điều này có nghĩa là bạn không cung cấp bất kỳ cách nào để kiểm tra xem WhatsApp đã được cài đặt hay chưa.
0101100101

64

Với mã này, bạn có thể mở cuộc trò chuyện whatsapp với số nhất định.

void openWhatsappContact(String number) {
    Uri uri = Uri.parse("smsto:" + number);
    Intent i = new Intent(Intent.ACTION_SENDTO, uri);
    i.setPackage("com.whatsapp");  
    startActivity(Intent.createChooser(i, ""));
}

3
@ user2957782 i sau thưa ông này, nhưng khi tôi bấm vào nút của tôi để bắt đầu whatsapp của tôi nó nói "Không có ứng dụng có thể thực hiện hành động này"
Arjun narahari

@VihaanVerma bạn có thể chia sẻ cách bạn làm việc này không? Tôi đã triển khai mã tương tự đối với phiên bản whatsapp 2.11.56021 và tôi không nhận được gì ...
Alamgir Mand

1
Được kiểm tra, nó sẽ đưa tôi đến tất cả danh sách trò chuyện, không phải cửa sổ trò chuyện của một số cụ thể.
Darpan

8
Nó chỉ hoạt động khi bạn có số đó trong danh sách trò chuyện hoặc danh sách liên hệ của mình.
Anshul Tyagi

1
thay vì startActivity(Intent.createChooser(i, ""));sử dụng startActivity(i);cho trò chuyện số được cung cấp trực tiếp mở. 1. Đã test trên Samsung J7 prime thì nó hoạt động. 2. số không có trong danh sách liên lạc của tôi cũng như trong danh sách trò chuyện của tôi. 3. nếu số không sử dụng whatsapp, một hộp thoại xuất hiện hỏi tôi rằng tôi có muốn mời liên hệ đó trên whatsapp không. Tôi không nghĩ đó là giải pháp tốt nhất nếu bạn muốn cung cấp hỗ trợ liên hệ whatsapp cho người dùng ứng dụng của mình.
Muhammad Saqib

25

Tôi đã tìm thấy giải pháp sau, trước tiên bạn sẽ cần id whatsapp:

Đối sánh với các báo cáo từ một số chủ đề khác ở đây và trong các diễn đàn khác, tên đăng nhập mà tôi tìm thấy là một số loại: mã vùng quốc tế không có số 0 hoặc + ở đầu + số điện thoại không có số 0 + @ s.whatsapp.net đầu tiên

Ví dụ: nếu bạn sống ở Hà Lan và có số điện thoại 0612325032, nó sẽ là 31612325023@s.whatsapp.net -> +31 cho Hà Lan không có số 0 hoặc + và số điện thoại không có số 0.

public void sendWhatsAppMessageTo(String whatsappid) {

Cursor c = getSherlockActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI,
        new String[] { ContactsContract.Contacts.Data._ID }, ContactsContract.Data.DATA1 + "=?",
        new String[] { whatsappid }, null);
c.moveToFirst();

Intent whatsapp = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/data/" + c.getString(0)));
c.close();

 if (whatsapp != null) {

startActivity(whatsapp);      

} else {
        Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT)
                .show();
//download for example after dialog
                Uri uri = Uri.parse("market://details?id=com.whatsapp");
                Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
    }

}

Tôi đang thử mã này nhưng nó cho tôi biết rằng getSherlockActivity () không được xác định. làm thế nào để khắc phục điều này ??
Eman87

2
@ Eman87 Diego đang sử dụng Action Bar Sherlock, vì vậy phương pháp này. Lấy phạm vi hoạt động của bạn thay cho getSherlockActivity ().
Manan Sharma

4
Không có điểm nào if (whatsapp != null)như 2 dòng trên bạn đã làm Intent whatsapp = new Intent(...).
Carcamano

2
Đây là tùy chọn tốt để mở cửa sổ trò chuyện trực tiếp nếu người đó tồn tại trong Danh bạ. Có cách nào để làm điều tương tự cho số mới không tồn tại trong danh bạ của chúng tôi không?
MohammedYakub Moriswala

1
Bạn cần thêm <uses-permission android:name="android.permission.READ_CONTACTS" />quyền vàoAndroidManifest.xml
Pratik Butani

16

Điều này sẽ hoạt động cho dù Whatsapp đã được cài đặt hay chưa.

boolean isWhatsappInstalled = whatsappInstalledOrNot("com.whatsapp");
if (isWhatsappInstalled) {
    Uri uri = Uri.parse("smsto:" + "98*********7")
    Intent sendIntent = new Intent(Intent.ACTION_SENDTO, uri);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "Hai Good Morning");
    sendIntent.setPackage("com.whatsapp");
    startActivity(sendIntent);
} else {
    Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT).show();
    Uri uri = Uri.parse("market://details?id=com.whatsapp");
    Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(goToMarket);

}

private boolean whatsappInstalledOrNot(String uri) {
    PackageManager pm = getPackageManager();
    boolean app_installed = false;
    try {
        pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
        app_installed = true;
    } catch (PackageManager.NameNotFoundException e) {
        app_installed = false;
    }
    return app_installed;
}

11
Hoạt động Không fount exeption ngay cả khi whatsapp cài đặt
itzhar

2
Không tìm thấy Hoạt động nào để xử lý Intent {act = android.intent.action.SENDTO typ = text / trơn pkg = com.whatsapp (có tính năng bổ sung)}
Rajesh

2
Bạn cần xóa dòng này để làm việc với bạn sendIntent.setType ("text / trơn");
MSaudi

2
loại bỏ sendIntent.setType ( "text / plain") sẽ chăm sóc của các Hoạt động Not Found exeption không bị ném, nhưng bây giờ các văn bản không được thêm vào như là thông điệp
Rik van Velzen

có vẻ như nó không còn khả thi nữa, hoạt động nhận được ý định có một số tham chiếu đến "sms_body" nhưng tôi không thể làm cho nó hoạt động
sherpya

15

Giải pháp đơn giản, hãy thử điều này.

String phoneNumberWithCountryCode = "+62820000000";
String message = "Hallo";

startActivity(
    new Intent(Intent.ACTION_VIEW,
        Uri.parse(
            String.format("https://api.whatsapp.com/send?phone=%s&text=%s", phoneNumberWithCountryCode, message)
        )
    )
);

10

Đã thử nghiệm trên Marshmallow S5 và nó hoạt động!

    Uri uri = Uri.parse("smsto:" + "phone number with country code");
    Intent sendIntent = new Intent(Intent.ACTION_SENDTO, uri);
    sendIntent.setPackage("com.whatsapp");
    startActivity(sendIntent); 

Thao tác này sẽ mở một cuộc trò chuyện trực tiếp với một người, nếu whatsapp không được cài đặt, điều này sẽ ném ra ngoại lệ , nếu số điện thoại không được biết đến với whatsapp, họ sẽ đề nghị gửi lời mời qua sms hoặc tin nhắn sms đơn giản


những gì về 'nút gửi'? Chúng ta có thể làm điều đó theo chương trình không ...?
gumuruh,

3

Mã sau được ứng dụng Google Hiện hành sử dụng và sẽ KHÔNG hoạt động với bất kỳ ứng dụng nào khác.

Tôi viết bài này vì nó khiến tôi tức giận, rằng WhatsApp không cho phép bất kỳ nhà phát triển nào khác gửi tin nhắn trực tiếp ngoại trừ Google.

Và tôi muốn các nhà phát triển tự do khác biết rằng kiểu hợp tác này đang diễn ra, trong khi Google tiếp tục nói về việc "mở cho mọi người" và WhatsApp nói rằng họ không muốn cung cấp bất kỳ quyền truy cập nào cho các nhà phát triển.

Gần đây WhatsApp đã thêm một Intent đặc biệt cho Google Hiện hành, trông giống như sau:

Intent intent = new Intent("com.google.android.voicesearch.SEND_MESSAGE_TO_CONTACTS");
intent.setPackage("com.whatsapp");
intent.setComponent(new ComponentName("com.whatsapp", "com.whatsapp.VoiceMessagingActivity"));

intent.putExtra("com.google.android.voicesearch.extra.RECIPIENT_CONTACT_CHAT_ID", number);
intent.putExtra("android.intent.extra.TEXT", text);
intent.putExtra("search_action_token", ?????);

Tôi cũng có thể phát hiện ra rằng "search_action_token" là PendingIntent có chứa IBinder-Object, được gửi trở lại Google App và được kiểm tra, nếu nó được tạo bởi Google Hiện hành.

Nếu không, WhatsApp sẽ không chấp nhận tin nhắn.


Hấp dẫn! nhưng bạn có thể giải thích thêm về "search_action_token" cách chúng tôi có thể lấy và triển khai nó không.
Bilal Mustafa

APK com.google.android.googlequicksearchbox Class com.google.android.search.verification.api.SearchActionVerificationService Method createGoogleVerificationIntent
black-hawk

3

Hiện tại, API chính thức duy nhất mà bạn có thể GETyêu cầu:

https://api.whatsapp.com/send?phone=919773207706&text=Hello

Dù sao, có một chương trình API bí mật đã được chạy bởi WhatsApp


1
Mặc dù liên kết này có thể trả lời câu hỏi, nhưng tốt hơn hết bạn nên đưa các phần thiết yếu của câu trả lời vào đây và cung cấp liên kết để tham khảo. Các câu trả lời chỉ có liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi. - Từ đánh giá
Kumar Saurabh

1
@KumarSaurabh Đây không phải là một liên kết, đó là một yêu cầu GET
Zameer

3

sử dụng mã dòng đơn này để Gửi tin nhắn qua WhatsApp

//NOTE : please use with country code first 2digits without plus signed
try {
      String mobile = "911234567890";
      String msg = "Its Working";
      startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://api.whatsapp.com/send?phone=" + mobile + "&text=" + msg)));
      }catch (Exception e){
        //whatsapp app not install
     }

2

Điều này phù hợp với tôi:

PackageManager pm = context.getPackageManager();
try {
    pm.getPackageInfo("com.whatsapp", PackageManager.GET_ACTIVITIES);
    Intent intent = new Intent();
            intent.setComponent(new ComponentName(packageName,
                    ri.activityInfo.name));
            intent.setType("text/plain");
            intent.putExtra(Intent.EXTRA_TEXT, element);

} catch (NameNotFoundException e) {
    ToastHelper.MakeShortText("Whatsapp have not been installed.");
}

2

Đây là những gì làm việc cho tôi :

        Uri uri = Uri.parse("https://api.whatsapp.com/send?phone=" + "<number>" + "&text=" + "Hello WhatsApp!!");
        Intent sendIntent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(sendIntent);

2

Sử dụng URL trực tiếp của whatsapp

String url = "https://api.whatsapp.com/send?phone="+number;
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);

1

điều này dài dòng nhưng rất hiệu quả. thưởng thức mã của bạn :)

 //method used to show IMs
private void show_custom_chooser(String value) {
    List<ResolveInfo> list = null;
    final Intent email = new Intent(Intent.ACTION_SEND);
    email.setData(Uri.parse("sms:"));
    email.putExtra(Intent.EXTRA_TEXT, "" + value);
    email.setType("text/plain"); // vnd.android-dir/mms-sms

    WindowManager.LayoutParams WMLP = dialogCustomChooser.getWindow()
            .getAttributes();
    WMLP.gravity = Gravity.CENTER;
    dialogCustomChooser.getWindow().setAttributes(WMLP);
    dialogCustomChooser.getWindow().setBackgroundDrawable(
            new ColorDrawable(android.graphics.Color.TRANSPARENT));
    dialogCustomChooser.setCanceledOnTouchOutside(true);
    dialogCustomChooser.setContentView(R.layout.about_dialog);
    dialogCustomChooser.setCancelable(true);
    ListView lvOfIms = (ListView) dialogCustomChooser
            .findViewById(R.id.listView1);
    PackageManager pm = getPackageManager();
    List<ResolveInfo> launchables = pm.queryIntentActivities(email, 0);
    // ////////////new
    list = new ArrayList<ResolveInfo>();
    for (int i = 0; i < launchables.size(); i++) {
        String string = launchables.get(i).toString();
        Log.d("heh", string);
//check only messangers
        if (string.contains("whatsapp")) {
            list.add(launchables.get(i));
        }
    }
    Collections.sort(list, new ResolveInfo.DisplayNameComparator(pm));
    int size = launchables.size();
    adapter = new AppAdapter(pm, list, MainActivity.this);
    lvOfIms.setAdapter(adapter);
    lvOfIms.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1,
                int position, long arg3) {
            ResolveInfo launchable = adapter.getItem(position);
            ActivityInfo activity = launchable.activityInfo;
            ComponentName name = new ComponentName(
                    activity.applicationInfo.packageName, activity.name);
            email.addCategory(Intent.CATEGORY_LAUNCHER);
            email.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                    | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            email.setComponent(name);
            startActivity(email);
            dialogCustomChooser.dismiss();
        }
    });
    dialogCustomChooser.show();

}

1

Tôi thực sự đến muộn nhưng tôi tin rằng ngày nay chúng ta có các giải pháp ngắn hơn và tốt hơn để gửi tin nhắn qua WhatsApp.

Bạn có thể sử dụng tùy chọn sau để gọi bộ chọn hệ thống, sau đó chọn ứng dụng bạn sẽ sử dụng để chia sẻ bất cứ thứ gì bạn muốn.

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(sendIntent);

Nếu bạn thực sự cần gửi qua WhatsApp, tất cả những gì bạn cần làm là như sau (Bạn sẽ bỏ qua bộ chọn hệ thống)

 Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
    sendIntent.setType("text/plain");
    // Put this line here
    sendIntent.setPackage("com.whatsapp");
    //
    startActivity(sendIntent);

Nếu bạn cần thêm thông tin, bạn có thể tìm thấy nó ở đây: Câu hỏi thường gặp về WhatsApp


1

Như tài liệu cho biết bạn chỉ có thể sử dụng một URL như:

https://wa.me/15551234567

Trong đó phân đoạn cuối cùng là số ở Định dạng E164

Uri uri = Uri.parse("https://wa.me/15551234567");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

1
private fun sendWhatsappMessage(phoneNumber:String, text:String) {        
  val url = if (Intent().setPackage("com.whatsapp").resolveActivity(packageManager) != null) {
        "whatsapp://send?text=Hello&phone=$phoneNumber"
    } else {
        "https://api.whatsapp.com/send?phone=$phoneNumber&text=$text"
    }

    val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
    startActivity(browserIntent)
}

Đây là một cách dễ dàng hơn nhiều để đạt được điều này. Mã này kiểm tra xem whatsapp đã được cài đặt trên thiết bị hay chưa. Nếu nó được cài đặt, nó sẽ bỏ qua bộ chọn hệ thống và đi đến địa chỉ liên hệ trên whatsapp và nhập trước văn bản trong cuộc trò chuyện. Nếu chưa được cài đặt, nó sẽ mở liên kết whatsapp trên trình duyệt web của bạn.


1

Bạn sẽ muốn sử dụng URL ở định dạng sau ...

https://api.whatsapp.com/send?text=text

Sau đó, bạn có thể yêu cầu nó gửi bất kỳ văn bản nào bạn muốn. Bạn cũng có tùy chọn để chỉ định số điện thoại ...

https://api.whatsapp.com/send?text=text&phone=1234

Điều bạn KHÔNG THỂ LÀM là sử dụng những thứ sau:

https://wa.me/send?text=text

Bạn sẽ nhận được...

Chúng tôi không thể tìm thấy trang bạn đang tìm kiếm

wa.meTuy nhiên, sẽ hoạt động nếu bạn cung cấp cả số điện thoại và văn bản. Tuy nhiên, phần lớn, nếu bạn đang cố tạo liên kết chia sẻ, bạn thực sự không muốn chỉ ra số điện thoại, vì bạn muốn người dùng chọn một người nào đó. Trong trường hợp đó, nếu bạn không cung cấp số và sử dụng wa.melàm URL, tất cả các liên kết chia sẻ của bạn sẽ không thành công. Hãy sử dụng app.whatsapp.com.


0

Kiểm tra mã này,

    public void share(String subject,String text) {
     final Intent intent = new Intent(Intent.ACTION_SEND);

String score=1000;
     intent.setType("text/plain");
     intent.putExtra(Intent.EXTRA_SUBJECT, score);
     intent.putExtra(Intent.EXTRA_TEXT, text);

     startActivity(Intent.createChooser(intent, getString(R.string.share)));
}

0

Điều này phù hợp với tôi:

public static void shareWhatsApp(Activity appActivity, String texto) {

    Intent sendIntent = new Intent(Intent.ACTION_SEND);     
    sendIntent.setType("text/plain");
    sendIntent.putExtra(android.content.Intent.EXTRA_TEXT, texto);

    PackageManager pm = appActivity.getApplicationContext().getPackageManager();
    final List<ResolveInfo> matches = pm.queryIntentActivities(sendIntent, 0);
    boolean temWhatsApp = false;
    for (final ResolveInfo info : matches) {
      if (info.activityInfo.packageName.startsWith("com.whatsapp"))  {
          final ComponentName name = new ComponentName(info.activityInfo.applicationInfo.packageName, info.activityInfo.name);
          sendIntent.addCategory(Intent.CATEGORY_LAUNCHER);
          sendIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK);
          sendIntent.setComponent(name);
          temWhatsApp = true;
          break;
      }
    }               

    if(temWhatsApp) {
        //abre whatsapp
        appActivity.startActivity(sendIntent);
    } else {
        //alerta - você deve ter o whatsapp instalado
        Toast.makeText(appActivity, appActivity.getString(R.string.share_whatsapp), Toast.LENGTH_SHORT).show();
    }
}

0

lấy số liên lạc mà bạn muốn gửi tin nhắn và tạo uri cho whatsapp, ở đây c là Con trỏ trả về liên hệ đã chọn.

Uri.parse("content://com.android.contacts/data/" + c.getString(0)));
i.setType("text/plain");
i.setPackage("com.whatsapp");           // so that only Whatsapp reacts and not the chooser
i.putExtra(Intent.EXTRA_SUBJECT, "Subject");
i.putExtra(Intent.EXTRA_TEXT, "I'm the body.");
startActivity(i);

0

Từ tài liệu

Để tạo liên kết của riêng bạn với một tin nhắn điền sẵn sẽ tự động xuất hiện trong trường văn bản của cuộc trò chuyện, hãy sử dụng https://wa.me/whatsappphonenumber/?text=urlencodedtext trong đó whatsappphonenumber là số điện thoại đầy đủ ở định dạng quốc tế và URL -encodedtext là thông báo điền trước được mã hóa URL.

Ví dụ: https://wa.me/15551234567?text=I 'm% 20interested% 20in% 20your% 20car% 20for% 20sale

Mã ví dụ

val phoneNumber = "13492838472"
    val text = "Hey, you know... I love StackOverflow :)"
    val uri = Uri.parse("https://wa.me/$phoneNumber/?text=$text")
    val sendIntent = Intent(Intent.ACTION_VIEW, uri)
    startActivity(sendIntent)

-1

API sau có thể được sử dụng trong c ++ như trong bài viết của tôi .

Bạn cần xác định một số hằng số:

//
#define    GroupAdmin                <YOUR GROUP ADMIN MOBILE PHONE>
#define GroupName                <YOUR GROUP NAME>
#define CLIENT_ID                <YOUR CLIENT ID>
#define CLIENT_SECRET            <YOUR CLIENT SECRET>

#define GROUP_API_SERVER        L"api.whatsmate.net"
#define GROUP_API_PATH          L"/v3/whatsapp/group/text/message/12"
#define IMAGE_SINGLE_API_URL    L"http://api.whatsmate.net/v3/whatsapp/group/image/message/12"

//

Sau đó, bạn kết nối với điểm cuối của API.

hOpenHandle = InternetOpen(_T("HTTP"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (hOpenHandle == NULL)
{
    return false;
}

hConnectHandle = InternetConnect(hOpenHandle,
    GROUP_API_SERVER,
    INTERNET_DEFAULT_HTTP_PORT,
    NULL, NULL, INTERNET_SERVICE_HTTP,
    0, 1);

if (hConnectHandle == NULL)
{
    InternetCloseHandle(hOpenHandle);
    return false;
}

Sau đó, gửi cả tiêu đề và nội dung và đợi kết quả cần là “OK”.

Bước 1 - mở một yêu cầu HTTP:

const wchar_t *AcceptTypes[] = { _T("application/json"),NULL };
HINTERNET hRequest = HttpOpenRequest(hConnectHandle, _T("POST"), GROUP_API_PATH, NULL, NULL, AcceptTypes, 0, 0);

if (hRequest == NULL)
{
    InternetCloseHandle(hConnectHandle);
    InternetCloseHandle(hOpenHandle);
    return false;
}

Bước 2 - gửi tiêu đề:

std::wstring HeaderData;

HeaderData += _T("X-WM-CLIENT-ID: ");
HeaderData += _T(CLIENT_ID);
HeaderData += _T("\r\nX-WM-CLIENT-SECRET: ");
HeaderData += _T(CLIENT_SECRET);
HeaderData += _T("\r\n");
HttpAddRequestHeaders(hRequest, HeaderData.c_str(), HeaderData.size(), NULL);

Bước 3 - gửi tin nhắn:

std::wstring WJsonData;
WJsonData += _T("{");
WJsonData += _T("\"group_admin\":\"");
WJsonData += groupAdmin;
WJsonData += _T("\",");
WJsonData += _T("\"group_name\":\"");
WJsonData += groupName;
WJsonData += _T("\",");
WJsonData += _T("\"message\":\"");
WJsonData += message;
WJsonData += _T("\"");
WJsonData += _T("}");

const std::string JsonData(WJsonData.begin(), WJsonData.end());

bResults = HttpSendRequest(hRequest, NULL, 0, (LPVOID)(JsonData.c_str()), JsonData.size());

Bây giờ chỉ cần kiểm tra kết quả:

TCHAR StatusText[BUFFER_LENGTH] = { 0 };
DWORD StatusTextLen = BUFFER_LENGTH;
HttpQueryInfo(hRequest, HTTP_QUERY_STATUS_TEXT, &StatusText, &StatusTextLen, NULL);
bResults = (StatusTextLen && wcscmp(StatusText, L"OK")==FALSE);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.