本文档介绍如何在新的嵌入式注册流程中为您的最终客户提供预验证公司电话号码。预验证公司电话号码是您已验证过的公司电话号码,可让最终客户无需再联系您获取一次性密码。
请注意,预验证公司电话号码由 WhatsApp Business 预验证电话号码对象(临时对象)表示。当最终客户选择其中一个号码并完成新的嵌入式注册流程时,该临时对象会被替换为 WhatsApp Business 电话号码对象。您必须获取该新对象的编号,才能注册该电话号码。
verification_expiry_time
字段表示。请按照以下步骤创建预验证公司电话号码,使其在嵌入式注册流程中显示,并在最终客户认领该号码后注册该号码。
使用商业帐号 > 添加电话号码端点,为您的公司创建一个预验证公司电话号码。这一步会将该号码添加至您的号码集合中。
POST /<BUSINESS_ACCOUNT_ID>/add_phone_numbers ?phone_number=<PHONE_NUMBER>
若请求成功,API 将返回 WhatsApp Business 预验证电话号码编号。请记录此值,以便在后续请求中使用。
{ "id": "<WHATSAPP_BUSINESS_PRE_VERIFIED_PHONE_NUMBER_ID>" }
curl -X POST 'https://graph.facebook.com/v20.0
/506914307656634/add_phone_numbers?phone_number=15550783881' \
-H 'Authorization: Bearer EAAJB...'
{ "id": "106540352242922" }
请参阅商业帐号 > 添加电话号码端点参考文档,了解支持的电话号码格式和查询参数。
使用 WhatsApp Business 预验证电话号码 > 请求代码端点,通过短信或语音方式为新创建的预验证公司电话号码请求获取一次性密码。
POST /<WHATSAPP_BUSINESS_PRE_VERIFIED_PHONE_NUMBER_ID>/request_code ?code_method=<CODE_METHOD> &language=<LANGUAGE>
若请求成功,API 将返回 true
。
{ "success": <SUCCESS> }
此外,我们还会向该电话号码发送包含一次性密码的短信或语音信息。请记录该一次性密码,以便在后续请求中使用。
WhatsApp code <CODE>
重复 3 次。
Verification code is <CODE>
curl -X POST 'https://graph.facebook.com/v20.0
/106540352242922/request_code?code_method=SMS&language=en_US' \
-H 'Authorization: Bearer EAAJB...'
{ "success": true }
WhatsApp code 123-456
重复 3 次。
Verification code is 123456
请参阅 WhatsApp Business 预验证电话号码 > 请求代码端点参考文档,了解支持的代码方法、语言和查询参数。
使用 WhatsApp Business 预验证电话号码 > 验证代码端点,通过一次性密码验证公司电话号码。
POST /<WHATSAPP_BUSINESS_PRE_VERIFIED_PHONE_NUMBER_ID>/verify_code ?code=<CODE>
若请求成功,API 将返回 true
,该公司电话号码的 code_verification_status
将被设为 VERIFIED
,有效期为 90 天。
{ "success": <SUCCESS> }
curl -X POST 'https://graph.facebook.com/v20.0
/106540352242922/verify_code?code=123456' \
-H 'Authorization: Bearer EAAJB...'
{ "success": true }
请参阅 WhatsApp Business 预验证电话号码 > 验证代码端点参考文档,了解支持的查询参数。
在拥有一个(或一组)处于已验证状态的预验证公司电话号码后,您可在新的嵌入式注册流程中显示该(这些)电话号码。
您可以通过预先填好的表单数据,在新的嵌入式注册流程中显示预验证公司电话号码。为此,请在 setup
对象中添加一个 preVerifiedPhone
对象(包含 ids
属性),并将预验证公司电话号码的编号以字符串数组的形式分配到 ids
属性:
{ scope: '<SCOPE>', extras: { feature: '<FEATURE>', setup: { preVerifiedPhone: { ids: [<IDS>] } } } }
例如:
{ scope: 'business_management,whatsapp_business_management', extras: { feature: 'whatsapp_embedded_signup', version: 2, setup: { business: { name: 'Acme Inc.', email: 'johndoe@acme.com', phone: { code: 1, number: '6505551234' }, website: 'https://www.acme.com', address: { streetAddress1: '1 Acme Way', city: 'Acme Town', state: 'CA', zipPostal: '94000', country: 'US' }, timezone: 'UTC-08:00' }, phone: { displayName: 'Acme Inc.', category: 'ENTERTAIN', description: 'Gears and widgets' }, preVerifiedPhone: { ids: ['106540352242922','105954558954427'] } } } }
请注意,如果处于 VERIFIED
状态的预验证公司电话号码在验证后 90 天内无人认领,该电话号码的状态将被设为 UNVERIFIED
,但该号码仍会出现在新的嵌入式注册流程中。如果有最终客户尝试认领未验证的电话号码,他们必须自行完成验证,这意味着他们必须向您请求获取一次性密码。
为避免这种糟糕的用户体验,建议您对您验证电话号码的时间进行追踪,并在电话号码恢复为未验证状态之前对其重新验证。
如果您不确定上次验证给定预验证公司电话号码的时间,可查询 WhatsApp Business 预验证电话号码端点,读取 code_verification_time
和 verification_expiry_time
字段(这两个字段分别表示最近验证时间和验证过期时间)。
请参阅获取已认领的电话号码编号部分。
在 WhatsApp Business 商业帐号 > 电话号码端点上执行 GET 请求,该端点将返回特定 WhatsApp Business 商业帐号上的所有 WhatsApp Business 电话号码。
为一组结果中返回的每个对象解析 display_phone_number
属性。如果某个对象的 display_phone_number
值显示电话号码(例如 16505551234
),则表示该对象已被认领。请复制该对象的 id
属性值,因为这是现在表示该电话号码的新 WhatsApp Business 电话号码对象的编号(旧编号将不再有效)。
或者,您可以使用包含 field
扩展的同一端点请求获取 display_phone_number
字段,并指定显示电话号码。例如:
GET /102290129340398/phone_numbers?display_phone_number=16505551234
如果该端点返回一个包含显示电话号码的 WhatsApp Business 电话号码对象,则表示该电话号码已被认领,您应该复制该对象的 id
。
使用商业帐号 > 预验证电话号码端点,获取包含您商业帐号中预验证公司电话号码集合的所有 WhatsApp Business 预验证电话号码对象(无论验证状态如何)的清单:
GET /<BUSINESS_ACCOUNT_ID>/preverified_numbers
系统会按创建时间的顺序自动排序结果。您也可以使用字段扩展来请求获取 code_verification_status
字段,让 API 仅返回包含指定验证状态的预验证公司电话号码:
GET /<BUSINESS_ACCOUNT_ID>/preverified_numbers?code_verification_status=VERIFIED
向公司 > 共享预验证号码端点发送 POST 请求,以便与业务合作伙伴共享预验证公司电话号码;或向同一端点发送 DELETE 请求,以便取消与业务合作伙伴共享预验证公司电话号码。
业务合作伙伴可以使已共享的预验证公司电话号码显示在嵌入式注册流程中。
如需与多个业务合作伙伴共享电话号码,推荐您采取以下做法:建议您的合作伙伴先获取已共享预验证号码的清单,然后在嵌入式注册流程中显示这些号码。此举会降低合作伙伴尝试显示已认领号码的可能性(已认领的号码不会出现在嵌入式注册流程中,但合作伙伴可能不知晓这一点,还可能想了解该号码未出现的原因)。
POST /<BUSINESS_ID>/share_preverified_numbers ?partner_business_id=<PARTNER_BUSINESS_ID> &preverified_id=<PREVERIFIED_ID>
DELETE /<BUSINESS_ID>/share_preverified_numbers ?partner_business_id=<PARTNER_BUSINESS_ID> &preverified_id=<PREVERIFIED_ID>
若请求成功,API 将返回 true。如果您要共享,请将新共享的预验证号码告知业务合作伙伴,并向其提供该号码的编号。如果您要取消共享,该号码将不再出现在合作伙伴实现的嵌入式注册流程中。
{ "success": <SUCCESS> }
curl -X POST 'https://graph.facebook.com/v17.0/share_preverified_numbers?partner_business_id=506914307656634&preverified_id=1706193509821738' \ -H 'Authorization: Bearer EAAH0...'
curl -X DELETE 'https://graph.facebook.com/v17.0/share_preverified_numbers?partner_business_id=506914307656634&preverified_id=1706193509821738' \ -H 'Authorization: Bearer EAAH0...'
{ "success": true }
您可以完全绕过嵌入式注册流程中的电话号码选择步骤,而以编程方式在已注册最终客户的 WhatsApp Business 商业帐号上注册预验证公司电话号码。为此,请按照注册电话号码文档中的步骤操作,但需要在第 1 步中使用预验证公司电话号码的编号,然后跳到第 4 步。
使用此请求在 WhatsApp Business 商业帐号上使用预验证公司电话号码的编号创建 WhatsApp Business 电话号码。这将替代第 1 步。
POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>/phone_numbers
{ "preverified_id": "<PREVERIFIED_ID>", "country_dial_code": "<COUNTRY_DIAL_CODE>", "display_phone_number": "<DISPLAY_PHONE_NUMBER>", "verified_name": "<VERIFIED_NAME>" }
占位符 | 描述 | 示例值 |
---|---|---|
字符串 | 必要。 预验证公司电话号码的编号。 |
|
字符串 | 必要。 预验证公司电话号码的国家/地区拨打代码。 |
|
字符串 | 必要。 预验证公司电话号码的显示电话号码。 |
|
字符串 | 必要。 预验证公司电话号码的显示名。 |
|
若请求成功,API 响应中将包含 WhatsApp Business 电话号码的编号。使用此编号注册此电话号码(注册电话号码文档中的第 4 步)。
{ "id": "<ID>" }
占位符 | 描述 | 示例值 |
---|---|---|
| 此对象将替换 WhatsApp Business 预验证电话号码对象。 |
|
curl 'https://graph.facebook.com/v20.0
/506914307656634/phone_numbers' \
-H 'Content-Type: text/plain' \
-H 'Authorization: Bearer EAAH7...' \
-d '
{
"preverified_id": "6635066806614622",
"country_dial_code": "1",
"display_phone_number": "5550783881",
"verified_name": "Lucky Shrub"
}'
{ "id": "108692048990658" }