question

infoplayfab avatar image
infoplayfab asked

How to use RequestMultiplayerServerRequest from Azure Functions?

I writed Azure Functions like below

 [FunctionName("RequestServer")]
         public static async Task<dynamic> Run(
             [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
             ILogger log)
         {
    
             FunctionExecutionContext<Dictionary<string, string>> context = JsonConvert.DeserializeObject<FunctionExecutionContext<Dictionary<string, string>>>(await req.ReadAsStringAsync());
             var authContext = new PlayFabAuthenticationContext
             {
                 EntityId = context.TitleAuthenticationContext.Id,
                 EntityToken = context.TitleAuthenticationContext.EntityToken
             };
    
             //GetEntityToken before calling this method
             var requestData = new PlayFab.MultiplayerModels.RequestMultiplayerServerRequest();
             requestData.SessionId = System.Guid.NewGuid().ToString();
             requestData.PreferredRegions = new List<string>() { "EastUs" };
             requestData.BuildId = "xxxx-xxxxx-xxxxxx";
             requestData.AuthenticationContext = authContext;
    
             return await PlayFabMultiplayerAPI.RequestMultiplayerServerAsync(requestData);
         }

But happened http error.

Please support.

multiplayer
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

·
Xiao Zha avatar image
Xiao Zha answered

I have tested your code, the error said that you must set your TitleId before making the API call. And below is the working code you can refer to set your TitleId.

 [FunctionName("Test")]
         public static async Task<dynamic> Run(
             [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
             ILogger log)
         {
    
             var context = JsonConvert.DeserializeObject<FunctionExecutionContext<dynamic>>(await req.ReadAsStringAsync());
    
             //Set the TitleId.
    
             PlayFabSettings.staticSettings.TitleId = context.TitleAuthenticationContext.Id;
    
              var authContext = new PlayFabAuthenticationContext
              {
                  EntityId = context.TitleAuthenticationContext.Id,
                  EntityToken = context.TitleAuthenticationContext.EntityToken
              };
    
             var requestData = new PlayFab.MultiplayerModels.RequestMultiplayerServerRequest();
              requestData.SessionId = System.Guid.NewGuid().ToString();
              requestData.PreferredRegions = new List<string>() { "EastUs" };
              requestData.BuildId = "e9d78f7c-8df1-4346-aa64-b66dc7079bd3";
              requestData.AuthenticationContext = authContext;
    
             var apiResult = await PlayFabMultiplayerAPI.RequestMultiplayerServerAsync (requestData);
             log.LogDebug(apiResult.Result.ToString());
    
             return new { message=apiResult.Result };            
                
         }
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.