คำเชิญเล่นเกม

The Web Games on Facebook and Facebook Gameroom platforms are no longer available for new submissions. This documentation is intended solely for developers with existing games. To learn more, read our blog post.

คำเชิญเล่นเกมเป็นกลไกที่ช่วยให้ผู้เล่นสามารถเชิญเพื่อนๆ มาเล่นเกมด้วยกันได้ ผู้เล่นจะส่งคำเชิญให้กับเพื่อนตั้งแต่ 1 คนขึ้นไป และคำเชิญจะมีการกระตุ้นให้ดำเนินการสำหรับเกมนั้นๆ รวมอยู่ด้วยเสมอ โดยผู้รับอาจเป็นผู้เล่นเดิมหรือผู้เล่นใหม่ก็ได้

คุณสามารถใช้คำเชิญเล่นเกมเพื่อดึงดูดผู้เล่นใหม่ๆ หรือทำให้ผู้เล่นเดิมกลับมามีส่วนร่วมอีกครั้งได้ ทั้งนี้ คุณสามารถส่งคำเชิญได้ใน 2 กรณีต่อไปนี้

  1. ผู้รับเป็นเพื่อนของผู้ส่งและยังไม่ได้ยืนยันตัวตนกับเกมนั้นๆ กรณีนี้จะเป็นประโยชน์สำหรับคำเชิญ
  2. ผู้รับเป็นเพื่อนของผู้ส่งและได้ยืนยันตัวตนกับเกมนั้นๆ ไปก่อนแล้ว กรณีนี้จะมีประโยชน์สำหรับการแจ้งเตือนตามรอบการเล่นและการขอความช่วยเหลือ

ระบบจะส่งคำเชิญขณะที่ผู้ส่งยังอยู่ในเกม และจะแสดงคำเชิญต่อผู้รับในหลายๆ ตำแหน่งบน Facebook คำเชิญจะเป็นแบบส่วนตัวอยู่เสมอ และมีเพียงผู้รับเท่านั้นที่จะเห็นคำเชิญได้ แม้คุณจะสามารถส่งคำเชิญ 1 รายการให้กับผู้รับหลายรายได้ในคราวเดียว แต่ผู้รับคำเชิญจะเห็นเฉพาะรายละเอียดของผู้ส่ง โดยไม่เห็นผู้รับรายอื่นๆ ที่ได้คำเชิญเดียวกันนี้

ตัวอย่างคำเชิญเล่นเกมที่แสดงบน Facebook สำหรับเดสก์ท็อป

คำเชิญเล่นเกมพร้อมให้ใช้งานสำหรับเกมบน Facebook และเกมมือถือบน iOS และ Android ในกรณีของเว็บไซต์ Facebook บนเดสก์ท็อป คำเชิญจะปรากฏเป็นป๊อปอัพที่มีเสียงเตือนทางด้านซ้ายล่างของหน้าจอ รวมถึงในสัญลักษณ์การแจ้งเตือน หากไม่ได้กรองเอาไว้ ส่วนในกรณีที่เป็นแพลตฟอร์มบนมือถือ คำเชิญจะแสดงอยู่ภายในรายการการแจ้งเตือนในแอพ Facebook หากไม่ได้กรองเอาไว้ คุณสามารถเข้าดูข้อมูลคำเชิญได้ผ่าน API คำเชิญเล่นเกม และสามารถสร้าง UI แบบกำหนดเองเพื่อช่วยให้เกมมือถือมอบประสบการณ์ได้ครบครันยิ่งขึ้น การนำคำเชิญมาใช้ของคุณจึงควรรองรับหลากหลายแพลตฟอร์ม และควรทำให้ผู้ใช้ได้รับประสบการณ์ที่สอดคล้องกันไม่ว่าจะใช้แพลตฟอร์มใด แต่คำเชิญที่ผู้เล่นส่งจะปรากฏในแพลตฟอร์มต่างๆ ที่เกมของคุณรองรับ

หมายเหตุ:

  • นับตั้งแต่ API กราฟ 2.3 คำเชิญเล่นเกมจะใช้ได้กับเกมเท่านั้น
  • เราจะกรองคำขอใช้แอพเพื่อหาสแปมหรือสัญญาณเชิงลบอื่นๆ เราจะไม่ส่งการแจ้งเตือนสำหรับคำเชิญที่ถูกกรองแล้ว ผู้ใช้สามารถดูคำเชิญที่ถูกกรองแล้วได้ในมุมมองกิจกรรมเกี่ยวกับเกม
  • เราเลิกใช้อ็อบเจ็กต์ Open Graph แบบกำหนดเองใน API กราฟเวอร์ชั่น 2.8 ด้วยเหตุนี้ จึงมีเพียงอ็อบเจ็กต์ที่สร้างไว้ล่วงหน้าเท่านั้นที่นำมาใช้ได้กับคำเชิญเล่นเกมใน API กราฟเวอร์ชั่น 2.8

การเปิดใช้กล่องคำเชิญ

ระบบจะสร้างกล่องคำเชิญเล่นเกมขึ้นผ่าน JavaScript, iOS SDK, Android SDK และ Unity SDK ตัวอย่างเหล่านี้จะถือว่าผู้ส่งได้ยืนยันตัวตนกับแอพแล้ว หากไม่ได้ระบุผู้รับไว้ คุณสามารถกรองรายชื่อเพื่อนให้ไม่เกินขีดจำกัดที่ 50 คนได้ และคุณสามารถแบ่งส่วนตามผู้เล่นที่ลงทะเบียนแล้วหรือเพื่อนที่ยังไม่ได้ลงทะเบียนได้ การทำเช่นนี้จะเป็นประโยชน์ในการสร้างขั้นตอนแยกต่างหากสำหรับการกลับมามีส่วนร่วมอีกครั้งหรือการเชิญ

JavaScript

การส่งคำเชิญโดยใช้ตัวเลือกเพื่อนครั้งละหลายคนที่กล่องคำเชิญเล่นเกมจัดเตรียมไว้ให้

FB.ui({method: 'apprequests',
  message: 'YOUR_MESSAGE_HERE'
}, function(response){
  console.log(response);
});

เมื่อปิดกล่องดังกล่าว อ็อบเจ็กต์ response จะมีผลลัพธ์ของการส่งอยู่ ซึ่งรวมถึง ID ของ request และอาร์เรย์ผู้รับ to ตัวอย่างเช่น

{
  "request":"1428237347457728",
  "to":["10150002163885335"]
}

โดยค่าเริ่มต้นแล้ว ระบบจะแสดงตัวเลือกเพื่อนครั้งละหลายคนให้กับผู้ส่ง ซึ่งช่วยให้สามารถเลือกผู้รับได้สูงสุด 50 คน

เนื่องจากความยาว URL มีขีดจำกัดอยู่ จำนวนผู้รับสูงสุดจึงอยู่ที่ 25 คนใน Internet Explorer 7 หรือ 8 เมื่อใช้กล่องที่ไม่ใช่ iframe

การส่งคำเชิญให้กับผู้รับที่เฉพาะเจาะจง

FB.ui({method: 'apprequests',
  message: 'YOUR_MESSAGE_HERE',
  to: 'USER_ID'
}, function(response){
  console.log(response);
});

หากระบุช่อง to ผู้ส่งจะไม่สามารถเลือกผู้รับเพิ่มเติมได้

การส่งคำเชิญให้ผู้รับที่เฉพาะเจาะจงหลายคน

FB.ui({method: 'apprequests',
  message: 'YOUR_MESSAGE_HERE',
  to: 'USER_ID, USER_ID, USER_ID'
}, function(response){
  console.log(response);
});

คุณสามารถระบุผู้รับหลายคนได้ผ่านรายการ ID ผู้ใช้โดยคั่นด้วยเครื่องหมายจุลภาค

จำนวนผู้รับสูงสุดที่คุณสามารถระบุได้ผ่านช่อง to นั้นมีข้อจำกัดอยู่ กล่าวคือ ระบุเพื่อนได้น้อยกว่า 50 คน และน้อยกว่า 26 คนเมื่อใช้ Internet Explorer 8 ลงไป

การส่งคำเชิญไปยังรายชื่อเพื่อนที่เฉพาะเจาะจง

FB.ui({method: 'apprequests',
  message: 'Friend Smash Request!',
  filters: [{name:'GROUP_1_NAME', user_ids:['USER_ID','USER_ID','USER_ID']},{name:'GROUP_2_NAME', user_ids: ['USER_ID','USER_ID','USER_ID']}]
}, function(response){
  console.log(response);
}});

การส่งอ็อบเจ็กต์ผ่านคำเชิญโดยการระบุ action_type และ object_id อย่างชัดเจนดังนี้

FB.ui({method: 'apprequests',
  message: 'Take this bomb to blast your way to victory!',
  to: {user-ids},
  action_type:'send',
  object_id: 'YOUR_OBJECT_ID'  // e.g. '191181717736427'
}, function(response){
  console.log(response);
});

ในกรณีที่เป็นคำเชิญตามรอบการเล่น อย่าระบุ object_id

FB.ui({method: 'apprequests',
  message: 'Just smashed you 78 times! It\'s your turn.',
  to: {user-ids},
  action_type:'turn'
}, function(response){
  console.log(response);
});

อีกวิธีหนึ่งคือ คุณสามารถแบ่งผู้รับออกเป็นรายชื่อ ซึ่งทำให้ผู้เล่นสามารถเลือกจากเพื่อนที่จัดกลุ่มตามตรรกะโดยอิงตามสถานะในเกมได้

โปรดดูข้อมูลเพิ่มเติมที่เอกสารอ้างอิง FB.ui สำหรับ Facebook SDK สำหรับ JavaScript

iOS SDK

การเปิดใช้กล่องคำเชิญโดยใช้ตัวเลือกเพื่อนที่ iOS SDK จัดเตรียมไว้ให้ดังนี้

FBSDKGameRequestContent *gameRequestContent = [[FBSDKGameRequestContent alloc] init];
// Look at FBSDKGameRequestContent for futher optional properties
gameRequestContent.message = @"YOUR_MESSAGE_HERE";
gameRequestContent.title = @"OPTIONAL TITLE";

// Assuming self implements <FBSDKGameRequestDialogDelegate>
[FBSDKGameRequestDialog showWithContent:gameRequestContent delegate:self];

การส่งคำเชิญโดยระบุ action_type และ object_id อย่างชัดเจนไปยังผู้รับที่เฉพาะเจาะจงโดยใช้ iOS SDK ดังนี้

FBSDKGameRequestContent *gameRequestContent = [[FBSDKGameRequestContent alloc] init];
gameRequestContent.message = @"Take this bomb to blast your way to victory!";
gameRequestContent.to = @[@"RECIPIENT_USER_ID"];
gameRequestContent.objectID = @"YOUR_OBJECT_ID";
gameRequestContent.actionType = @"ACTION_TYPE";

// Assuming self implements <FBSDKGameRequestDialogDelegate>
[FBSDKGameRequestDialog showWithContent:gameRequestContent delegate:self];

Android SDK

การส่งคำเชิญโดยใช้ตัวเลือกเพื่อนในกล่องคำเชิญผ่าน Android SDK

GameRequestDialog requestDialog;
CallbackManager callbackManager;

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  FacebookSdk.sdkInitialize(this.getApplicationContext());
  callbackManager = CallbackManager.Factory.create();
  requestDialog = new GameRequestDialog(this);
  requestDialog.registerCallback(callbackManager,
    new FacebookCallback<GameRequestDialog.Result>() {
    public void onSuccess(GameRequestDialog.Result result) {
      String id = result.getId();
    }
    public void onCancel() {}
      public void onError(FacebookException error) {}
    }
  );
}

private void onClickRequestButton() {
  GameRequestContent content = new GameRequestContent.Builder()
    .setMessage("Come play this level with me")
    .build();
  requestDialog.show(content);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  callbackManager.onActivityResult(requestCode, resultCode, data);
}

การส่งคำเชิญโดยระบุการดำเนินการและอ็อบเจ็กต์อย่างชัดเจนโดยใช้ Android SDK

private void onClickRequestButton() {
  GameRequestContent content = new GameRequestContent.Builder()
    .setMessage("Come play this level with me")
    .setTo("USER_ID")
    .setActionType(ActionType.SEND)
    .setObjectId("YOUR_OBJECT_ID")
    .build();
  requestDialog.show(content);
}

Unity SDK

วิธีสร้างคำเชิญใน Unity SDK มีดังต่อไปนี้ ให้ตรวจสอบดูรายละเอียดเพิ่มเติมในเอกสารประกอบเกี่ยวกับ FB.AppRequest

FB.AppRequest(
  message: "I Just got " + GameStateManager.Score.ToString() + " points! Can you beat it?",
  to: recipients,
  data: "{\"challenge_score\":" + GameStateManager.Score.ToString() + "}"
  title: "Friend Smash Challenge!",
  callback:appRequestCallback
);

พารามิเตอร์กล่อง

คุณสามารถสร้างกล่องคำเชิญเล่นเกมได้ด้วยพารามิเตอร์เพิ่มเติมจำนวนมากที่กำหนดลักษณะการทำงานของกล่องนั้นๆ โดยพารามิเตอร์เหล่านี้จะมีคำอธิบายอยู่ที่ด้านล่าง

ชื่อพารามิเตอร์ คำอธิบาย จำเป็นต้องระบุหรือไม่

app_id

ตัวระบุที่ไม่ซ้ำกันสำหรับแอพของคุณ

ใช่

redirect_uri

URL ที่จะเปลี่ยนเส้นทางไปหลังจากผู้ส่งคลิกปุ่มบนกล่อง โดยใช้ในการนำผู้ส่งกลับเข้าเกมหลังจากส่งคำเชิญ ทั้งนี้ด้วยเหตุผลด้านความปลอดภัย redirect_uri ที่ระบุจะต้องอยู่ภายในโดเมนระดับรากเดียวกันกับ URL หน้าเกมบนเว็บ Facebook ของแอพนั้นๆ

ใช่ เมื่อใช้การเปลี่ยนเส้นทาง URL

to

id, username หรือ invite token ของผู้ใช้ หรือรายการ id, username หรือ invite tokens ของผู้ใช้ที่คั่นด้วยเครื่องหมายจุลภาค ซึ่งจะเป็นเพื่อนของผู้ส่งหรือไม่ก็ได้ หากแอพระบุรายการนี้ ผู้ส่งจะไม่สามารถเลือกผู้รับได้ แต่หากไม่ระบุ ผู้ส่งก็จะเห็นตัวเลือกเพื่อนครั้งละหลายคน

ไม่

message

ข้อความแบบตัวอักษรธรรมดาที่จะส่งรวมอยู่ในคำเชิญ ข้อความนี้จะปรากฏอยู่ในมุมมองศูนย์รวมแอพของคำเชิญ แต่จะไม่ปรากฏบนสัญลักษณ์การแจ้งเตือน

ใช่

action_type

ใช้เมื่อกำหนดบริบทเพิ่มเติมเกี่ยวกับลักษณะของคำเชิญ ค่าที่เป็นไปได้คือ send, askfor และ turn

ใช่ หากมีการตั้งค่า object_id

object_id

ID อ็อบเจ็กต์ Open Graph ของอ็อบเจ็กต์ที่ส่ง

ใช่ หากมีการตั้งค่า action_type เป็น send หรือ askfor

filters

รายการนี้จะควบคุมชุดเพื่อนที่บุคคลหนึ่งจะเห็นหากตัวเลือกเพื่อนครั้งละหลายคนแสดงขึ้น หากเว้นว่างไว้ ตัวเลือกเพื่อนครั้งละหลายคนก็จะแสดงเพื่อนบน Facebook ทุกคนของผู้ใช้รายนั้น เมื่อระบุ app_users ตัวเลือกเพื่อนครั้งละหลายคนก็จะแสดงเฉพาะเพื่อนที่เป็นผู้ใช้แอพนั้นๆ อยู่ ซึ่งควรใช้เมื่อใช้คำเชิญในการหาคู่แข่ง หรืออีกทางหนึ่งก็คือเมื่อระบุ app_non_users ผู้ส่งจะเห็นเฉพาะเพื่อนที่ยังไม่เคยยืนยันตัวตนกับแอพไปก่อนหน้านี้ ซึ่งควรใช้เมื่อใช้คำเชิญในการเชิญผู้ใช้คนใหม่ๆ ให้เข้ามาเล่นเกม นอกจากนี้ แอพสามารถแนะนำตัวกรองแบบกำหนดเองเป็นพจนานุกรมด้วยคีย์ name และ user_ids ได้อีกด้วย ซึ่งมีค่าเป็นสตริงและรายการ id ของผู้ใช้ตามลำดับ ทั้งนี้ name คือชื่อของตัวกรองแบบกำหนดเองที่จะแสดงขึ้นในตัวเลือก ส่วน user_ids คือรายชื่อเพื่อนที่จะใส่รวมไว้ตามลำดับที่จะปรากฏ หมายเหตุ: ใน iOS SDK และ Android SDK ระบบจะรองรับเฉพาะตัวกรอง app_users และ app_non_users ในรูปแบบค่าเดี่ยว โดยจะไม่รองรับพจนานุกรมของค่าเหล่านี้

ไม่

exclude_ids

อาร์เรย์ ID ผู้ใช้ที่จะไม่รวมอยู่ในกล่อง หากมีคนไม่รวมอยู่ในกล่อง บุคคลนั้นก็จะไม่ปรากฏอยู่ในตัวเลือกเพื่อนครั้งละหลายคน หมายเหตุ: SDK มือถือไม่รองรับพารามิเตอร์นี้ และระบบจะไม่สนใจพารามิเตอร์นี้

ไม่

max_recipients

จำนวนเต็มที่ระบุจำนวนเพื่อนสูงสุดที่ผู้ส่งสามารถเลือกได้ในตัวเลือกเพื่อน โดยพารามิเตอร์นี้ไม่มีการรองรับบนอุปกรณ์มือถือ

ไม่

data

ข้อมูลที่มีรูปแบบอิสระเพิ่มเติมที่คุณอาจส่งเพื่อดำเนินการติดตาม ระบบจะจัดเก็บไว้เป็นส่วนหนึ่งของอ็อบเจ็กต์คำเชิญที่สร้างขึ้น โดยใช้อักขระได้ไม่เกิน 255 ตัว

ไม่

title

ชื่อกล่อง โดยใช้อักขระได้ไม่เกิน 50 ตัว

ไม่

ข้อมูลการตอบกลับ

เมื่อมีการส่งคำเชิญผ่านกล่องคำเชิญเล่นเกม ระบบจะส่งการตอบกลับไปยังการเรียกกลับที่มีข้อมูลต่อไปนี้

ชื่อพารามิเตอร์ คำอธิบาย

request

ID อ็อบเจ็กต์คำเชิญ หากต้องการเรียกดู ID คำเชิญแบบเต็ม ให้เชื่อมรายการนี้เข้ากับ ID ผู้ใช้จากช่อง to: {request_object_id}_{user_id}

to

อาร์เรย์ ID ผู้ใช้ที่เป็นผู้รับสำหรับคำเชิญที่สร้างขึ้น

การจัดการคำเชิญในเกม

การยอมรับคำเชิญ

เมื่อผู้รับยอมรับคำเชิญบนเว็บไซต์ Facebook บนเดสก์ท็อป ระบบจะส่งบุคคลดังกล่าวไปยัง URL ของเกมที่ส่งคำเชิญ โดย URL นี้จะมีพารามิเตอร์ request_ids แบบ GET เพิ่มเติม ซึ่งเป็นรายการ ID คำเชิญที่ผู้ใช้ยอมรับโดยคั่นด้วยเครื่องหมายจุลภาค

http://apps.facebook.com/[app_name]/?request_ids=[REQUEST_IDs]

ระบบจะไม่ลบคำเชิญโดยอัตโนมัติเมื่อผู้รับยอมรับคำเชิญ โดยเกมของคุณจะต้องรับผิดชอบในส่วนนี้ แนวทางทั่วไปก็คือ เมื่อมีการเปิดเกมของคุณ ให้อ่านรายการคำเชิญที่ค้างอยู่สำหรับผู้ใช้รายนั้นจาก API กราฟ และลบแต่ละรายการหลังจากประมวลผลแล้ว

เมื่อผู้รับยอมรับคำเชิญบนแพลตฟอร์มมือถือ คำเชิญนี้จะลิงก์ตรงไปยังแอพ โดยจะมีพารามิเตอร์เพิ่มเติมแสดงขึ้นในขณะโหลดแอพ ซึ่งก็คือ ID คำเชิญ ความรับผิดชอบในการยอมรับและล้างคำเชิญแบบเดียวกันนี้ก็จะมีผลกับมือถือเช่นกัน หลักปฏิบัติที่ดี คือ ให้ตรวจสอบและล้างคำเชิญที่รอดำเนินการขณะเปิดเกม

การอ่านคำเชิญ

คำเชิญแต่ละรายการที่ส่งจะมี ID อ็อบเจ็กต์คำเชิญที่ไม่ซ้ำกัน โดย ID นี้จะแสดงถึงอ็อบเจ็กต์คำเชิญ คุณสามารถเชื่อม ID อ็อบเจ็กต์คำเชิญนี้กับ ID ผู้ใช้ที่เป็นผู้รับได้ เพื่อสร้างอินสแตนซ์คำเชิญที่เฉพาะเจาะจงขึ้นมา ซึ่งจะแสดงถึงการสร้างอินสแตนซ์คำเชิญ 1 รายการที่จะส่งให้กับผู้รับที่เฉพาะเจาะจง

ตัวอย่างเช่น เมื่อส่งคำเชิญ การตอบกลับจากกล่องคำเชิญเล่นเกมจะมีลักษณะดังนี้

{
  request: 'REQUEST_OBJECT_ID'
  to:[array of USER_IDs]
}

หากคุณค้นหา ID อ็อบเจ็กต์คำเชิญผ่าน API กราฟ การตอบกลับที่คุณได้รับจะแตกต่างออกไปเล็กน้อย ทั้งนี้ขึ้นอยู่กับบริบทในการดูของการค้นหา แต่การตอบกลับจะแสดงถึงอ็อบเจ็กต์คำเชิญทั้งหมดอยู่เสมอ

ตัวอย่างเช่น หากสืบค้นไปยัง http://graph.facebook.com/{REQUEST_OBJECT_ID}?access_token=USER_ACCESS_TOKEN โดยใช้โทเค็นการเข้าถึงผู้ใช้ของผู้รับ คุณจะเห็นการตอบกลับดังต่อไปนี้

{
  "id": "REQUEST_OBJECT_ID",
  "application": {
    "name": "APP_DISPLAY_NAME",
    "namespace": "APP_NAMESPACE",
    "id": "APP_ID"
  },
  "to": {
    "name": "RECIPIENT_FULL_NAME",
    "id": "RECIPIENT_USER_ID"
  },
  "from": {
    "name": "SENDER_FULL_NAME",
    "id": "SENDER_USER_ID"
  },
  "message": "ATTACHED_MESSAGE",
  "created_time": "2014-01-17T16:39:00+0000"
}

โปรดทราบว่าระบบจะส่งคืนทั้งช่อง to และ from แต่หากมีการเรียกใช้ตำแหน่งข้อมูลเดียวกันนี้โดยใช้โทเค็นการเข้าถึงของผู้ส่งหรือโทเค็นการเข้าถึงแอพ Facebook ก็จะส่งคืนโค้ดดังต่อไปนี้

{
  "id": "REQUEST_OBJECT_ID",
  "application": {
    "name": "APP_DISPLAY_NAME",
    "namespace": "APP_NAMESPACE",
    "id": "APP_ID"
  },
  "from": {
    "name": "SENDER_FULL_NAME",
    "id": "SENDER_USER_ID"
  },
  "message": "ATTACHED_MESSAGE",
  "created_time": "2014-01-17T16:39:00+0000"
}

หากต้องการเรียกดูคำเชิญแบบเต็มที่มีผู้รับรวมอยู่ด้วยโดยใช้โทเค็นการเข้าถึงแอพ คุณจะต้องนำ ID ผู้ใช้ที่เป็นผู้รับไปต่อท้ายอักขระขีดล่าง "_" ตัวอย่างเช่น การเรียกใช้ไปยัง https://graph.facebook.com/{REQUEST_OBJECT_ID}_{USER_ID}?access_token={APP_ACCESS_TOKEN} จะส่งคืนโค้ดดังต่อไป

{
  "id": "REQUEST_OBJECT_ID",
  "application": {
    "name": "APP_DISPLAY_NAME",
    "namespace": "APP_NAMESPACE",
    "id": "APP_ID"
  },
  "to": {
    "name": "RECIPIENT_FULL_NAME",
    "id": "RECIPIENT_USER_ID"
  },
  "from": {
    "name": "SENDER_FULL_NAME",
    "id": "SENDER_USER_ID"
  },
  "message": "ATTACHED_MESSAGE",
  "created_time": "2014-01-17T16:39:00+0000"
}

การอ่านคำเชิญทั้งหมด

หากต้องการอ่านคำเชิญทั้งหมดสำหรับผู้รับ คุณสามารถสืบค้นกราฟได้ดังที่แสดงด้านล่างโดยใช้ USER ACCESS TOKEN ของผู้รับ ซึ่งจะส่งคืนรายการ ID คำเชิญสำหรับผู้ใช้รายนั้นๆ ในแอพ

GET https://graph.facebook.com/me/apprequests?access_token=[USER ACCESS TOKEN]

การลบคำเชิญ

ระบบจะไม่ลบคำเชิญเล่นเกมโดยอัตโนมัติหลังจากที่ผู้รับยอมรับคำเชิญไปแล้ว โดยผู้พัฒนาจะมีหน้าที่รับผิดชอบในการลบคำเชิญหลังจากมีการยอมรับไปแล้ว คุณจะต้องลบคำเชิญในนามของผู้เล่นทันทีที่มีการยอมรับแล้ว

คุณสามารถลบคำเชิญได้ผ่านวิธีการต่างๆ ดังนี้

API กราฟ

ออกคำขอ HTTP DELETE ไปยัง request_id ที่ผ่านการเชื่อมแล้วดังนี้

DELETE https://graph.facebook.com/[{REQUEST_OBJECT_ID}_{USER_ID}]?
      access_token=[USER or APP ACCESS TOKEN]

JavaScript

function deleteRequest(requestId) {
  FB.api(requestId, 'delete', function(response) {
    console.log(response);
  });
}

การติดตามคำเชิญเพื่อดูการแนะนำและให้รางวัล

คุณสามารถให้รางวัลแก่ผู้ส่งคำเชิญเล่นเกมได้โดยอิงตามการดำเนินการบางอย่างที่ผู้รับกระทำหลังได้รับคำเชิญ ตัวอย่างเช่น คุณไม่สามารถให้รางวัลแก่ผู้เล่นเพียงเพราะส่งคำเชิญได้ แต่หากผู้รับติดตั้งเกมและเล่นเกมจนถึงเลเวลหนึ่งๆ หลังจากยอมรับคำเชิญ คุณก็จะสามารถให้รางวัลแก่ผู้ส่งรายนั้นได้

หากต้องการให้รางวัลแก่ผู้ส่ง คุณจำเป็นต้องทราบผู้ที่คุณจะให้รางวัล ซึ่งทำได้ 2 วิธีดังนี้

  1. เมื่อส่งคำเชิญ ให้จัดเก็บ request_id ที่ระบบส่งคืนมาในการตอบกลับจากกล่องคำเชิญเล่นเกม และนำมาจับคู่เมื่อได้รับเพื่อให้รางวัลแก่ผู้ส่ง
  2. อ่านคำเชิญทั้งหมดสำหรับผู้เล่นเมื่อผู้เล่นเปิดเกม และมอบรางวัลให้แก่ผู้ส่งตาม id ในช่อง from ของคำเชิญ หากผู้เล่นคนหนึ่งมีเพื่อนส่งคำเชิญให้หลายคน คุณก็สามารถเลือกได้ว่าจะมอบรางวัลให้กับผู้ส่งคนแรกหรือผู้ส่งทุกคน

API เพื่อนที่เชิญได้

API เพื่อนที่เชิญได้ไม่สามารถใช้กับคำเชิญเล่นเกมได้แล้ว โดยในตอนนี้จะส่งคืนข้อมูลเปล่าและเราจะเลิกใช้ในอนาคตอันใกล้

การแปลเป็นภาษาท้องถิ่น

Facebook รองรับการแปล requests เป็นภาษาท้องถิ่น เพื่อช่วยให้คุณมอบประสบการณ์การใช้งานอันยอดเยี่ยมแก่กลุ่มเป้าหมายทั่วโลก ก่อนจะแปลคำเชิญ คุณจำเป็นต้องรู้จักคำเชิญประเภทต่างๆ และวิธีการแสดงผลก่อน คำเชิญอาจแสดงผลเป็น "Anita ได้ส่งคำเชิญให้คุณ" แบบมาตรฐาน หรือหากมีการจับคู่การดำเนินการ/อ็อบเจ็กต์แบบเจาะจง ก็จะเป็น "Anita ขอให้คุณส่งตัวเพิ่มให้" หรือ "Anita ส่งระเบิดให้คุณ" นอกจากนี้ยังมีคำเชิญเมื่อถึงรอบอีกด้วย ซึ่งจะแจ้งให้ผู้ใช้ทราบว่าเกมที่แข่งกับเพื่อนนั้นได้มาถึงรอบของตนแล้ว ผู้เล่นที่ได้ยืนยันตัวตนกับเกมแล้วจะเห็นตัวอย่างทั้งหมดเหล่านี้ แต่หากผู้รับยังไม่ได้ติดตั้งเกม ก็จะเห็นเป็นคำเชิญแทน ตัวอย่างเช่น "Anita ได้เชิญให้คุณเล่นเฟรนสแมช" เรามาดูวิธีการแปลแต่ละรายการเหล่านี้กัน

การแปลคำเชิญ

Facebook จะแปลข้อความในคำเชิญให้โดยอัตโนมัติ และผู้พัฒนาจะไม่สามารถควบคุมข้อความได้ โดยจะแปลเป็นภาษาของผู้รับ

การแจ้งเตือนคำเชิญเป็นภาษาอังกฤษ
การแจ้งเตือนคำเชิญเป็นภาษาไทย

ให้สังเกตจากตัวอย่างข้างต้นว่า ระบบจะแปลข้อความ "invited you to play" เป็นภาษาอื่น (ในกรณีนี้คือภาษาไทย) โดยอัตโนมัติ ชื่อแอพและคำอธิบายจะได้รับการแปลในส่วน "แปลเป็นภาษาท้องถิ่น" ของการตั้งค่าแอพเป็น "ชื่อที่แสดง" และ "คำอธิบาย" ในกล่องสีเหลืองด้านล่าง

การแปลชื่อที่แสดงและคำอธิบายของแอพ

คำเชิญสามารถแสดงขึ้นในศูนย์รวมแอพได้ด้วย "ข้อความ" ของคำเชิญจะแสดงขึ้นในศูนย์รวมแอพ โดยผู้พัฒนาจะสามารถแปลข้อความดังกล่าวได้ ในตัวอย่างด้านล่าง ข้อความว่า "Can I have a life to help me through the next level?" เป็นภาษาอังกฤษ ส่วน "ช่วยส่งตัวเพิ่มให้หน่อย ต้องใช้ไปเลเวลหน้า" เป็นภาษาไทย ในปัจจุบัน ข้อความหลักของคำเชิญว่า "Anita ได้ส่งคำเชิญให้คุณ" ยังไม่แสดงในศูนย์รวมแอพ

คำเชิญในศูนย์รวมแอพเป็นภาษาอังกฤษ
คำเชิญในศูนย์รวมแอพเป็นภาษาไทย

การแปลข้อความ

เนื่องจากระบบจะส่งผ่านข้อความเป็นพารามิเตอร์เมื่อมีการเปิดกล่องคำเชิญขึ้นมา คุณจึงสามารถแปลข้อความนี้ด้วยตนเองได้ก่อนจะเปิดกล่องคำเชิญ และส่งเป็นข้อความไปในสตริงที่ผ่านการแปลแล้ว หากต้องการเปลี่ยนคำแปลแบบไดนามิก คุณก็ควรดำเนินการก่อนจะเปิดกล่อง ทั้งนี้ คุณเป็นผู้ที่ต้องตัดสินใจว่าต้องการให้แสดงเป็นภาษาใด เนื่องจากจะเป็นข้อความเดียวกันกับที่ผู้ส่งเห็นในตัวอย่างคำเชิญและข้อความที่ผู้รับเห็นเมื่อได้รับคำเชิญ

ผู้พัฒนาหลายรายจะตรวจจับรูปแบบภาษาของผู้ส่ง แล้วใช้รูปแบบภาษานั้นเพื่อกำหนดภาษาที่จะใช้เป็นข้อความ ทั้งนี้ ในกรณีส่วนใหญ่ ผู้พัฒนาจะถือว่าผู้ส่งและผู้รับใช้ภาษาเดียวกัน ในตัวอย่างข้างต้น คุณสามารถดูรูปแบบภาษาของผู้ส่ง และหากเป็นภาษาไทย คุณก็สามารถส่งข้อความในสตริงเป็นภาษาไทยได้เลย ดังนี้

FB.ui({method: 'apprequests',
  message: 'ช่วยส่งตัวเพิ่มให้หน่อย ต้องใช้ไปเลเวลหน้า'
}, requestCallback);

หลักปฏิบัติที่ดีที่สุด

การผนวกข้อมูลเข้ากับคำเชิญ

อย่างที่ได้กล่าวไปแล้วในส่วนพารามิเตอร์กล่องข้างต้น คุณสามารถเสริมข้อมูลเพิ่มเติมได้อีกไม่เกิน 255 อักขระ เพื่อส่งไปพร้อมกับคำเชิญ คุณสามารถใช้คุณสมบัตินี้เพื่อส่งข้อมูลเพิ่มเติมเกี่ยวกับคำเชิญ หรือจะเสริมตัวระบุที่คุณสามารถนำมาใช้ในภายหลังเพื่อค้นหาข้อมูลที่เกี่ยวข้องซึ่งจัดเก็บไว้ในเซิร์ฟเวอร์ของคุณก็ได้

ตัวอย่างเช่น ใน Friend Smash ซึ่งเป็นตัวอย่างโปรเจ็กต์เกมของ Facebook ผู้เล่นจะผลัดกันแข่ง "ทุบ" เพื่อนให้ได้มากที่สุดเท่าที่จะทำได้ เมื่อมีผู้เล่นคนหนึ่งส่งชาเลนจ์ให้กับอีกคนหนึ่งผ่านคำเชิญ ระบบจะใช้พารามิเตอร์ data เพื่อจัดเก็บคะแนนล่าสุดของผู้เล่นที่เป็นคนชาเลนจ์ จากนั้น เกมจะดึงค่านี้ให้กับผู้เล่นที่ได้รับชาเลนจ์ และนำมาใช้เป็นคะแนนเป้าหมายสำหรับเกมถัดไป

กรองคำเชิญ

เมื่อสร้างตัวเลือกเพื่อนครั้งละหลายคนแบบกำหนดเอง หรือเลือกคนที่จะส่งคำเชิญให้ด้วยวิธีอื่นใด ให้พิจารณาระบุตัวกรองเพื่อช่วยผู้เล่นในการเลือกผู้รับที่ตนต้องการ

ตัวกรองทั่วไปที่ใช้เมื่อนำคำเชิญมาใช้โดยใช้กล่องคำเชิญเล่นเกมก็คือตัวกรอง app_non_users ตัวกรองนี้จะป้องกันไม่ให้กล่องคำเชิญเล่นเกมแสดงผู้คนที่เคยเล่นเกมของคุณไปแล้ว ตัวกรองอื่นๆ ที่คุณอาจพิจารณาใช้ก็คือ ผู้เล่นที่โต้ตอบด้วยเมื่อเร็วๆ นี้ หรือผู้เล่นของเกมที่คล้ายๆ กันซึ่งคุณควบคุมอยู่ โปรดดูรายการตัวกรองทั้งหมดที่สามารถใช้งานได้ที่กล่องคำเชิญเล่นเกม - เอกสารอ้างอิงเกี่ยวกับพารามิเตอร์

สร้างกลไกที่ส่งเสริมการมีส่วนร่วม

สร้างกลไกที่ส่งเสริมการมีส่วนร่วมให้กับผู้เล่นเมื่อผู้เล่นเข้าเยี่ยมชมเพื่อนๆ ในเกมหรือโต้ตอบกับเพื่อนๆ โดยตรง ตัวอย่างเช่น หากเกมรองรับระบบเพื่อนบ้าน ก็ให้มอบพลังงานโบนัสเมื่อผู้เล่นเข้าไปเยี่ยมชมสภาพแวดล้อมของเพื่อนบ้าน หากฐานของผู้เล่นถูกโจมตี ก็ให้เพื่อนๆ เข้ามาช่วยซ่อมได้ โดยทั่วไปแล้ว ผู้เล่นคิดว่าการช่วยให้เพื่อนได้คืบหน้าขึ้นเป็นเรื่องที่ดี และการเปิดโอกาสให้ทำเช่นนี้ก็จะส่งผลให้เกิดประสบการณ์ทางโซเชียลที่ดีขึ้นและมีผู้คนเข้ามาเล่นมากกว่าเดิม

สร้างสิ่งของที่เป็นประโยชน์ให้กับผู้เล่น

มอบสิ่งที่เป็นประโยชน์ให้แก่ผู้เล่น ซึ่งผู้เล่นสามารถใช้ยกระดับการเล่นเกมหรือประสบการณ์ทางโซเชียลของตนได้

แบ่งกลุ่มผู้เล่นและมอบคำเชิญที่เหมาะสมกับบริบท

ประเมินผู้เล่นของคุณและแบ่งออกเป็นกลุ่มๆ ที่เหมาะกับเกมของคุณ (เช่น ผู้เล่นใหม่ ผู้เล่นที่กำลังคราฟต์ของ ผู้เล่นที่มีเพื่อนเยอะ ผู้เล่นที่มีส่วนร่วม ฯลฯ) ให้นึกหาสิ่งที่จะเป็นประโยชน์สำหรับผู้เล่นในระดับนั้นๆ และมอบสิ่งของที่เหมาะกับผู้เล่นแต่ละกลุ่มโดยเฉพาะ